解説
正しく作られたシステムは、パスワードそのものを保存しません。代わりにハッシュ関数(ここではSHA-256)で計算したハッシュ値を保存します。
ログイン時は入力されたパスワードを同じ方法でハッシュ化し、保存値と一致するかを比べます。こうすればデータが漏えいしても元のパスワードは分かりません。
平文を保存しないことが安全設計の基本です。実運用ではさらに「ソルト」を加えますが、まずはこの一方向照合の流れを理解しましょう。
書き方
hashlib.sha256(バイト列) — SHA-256ハッシュを計算するオブジェクトを返す。 ・文字列.encode(): 文字列をバイト列に変換(ハッシュ化に必要)。 ・.hexdigest(): ハッシュ値を16進文字列で取り出す。 ・== でハッシュ値どうしを比較して照合する。
書いて動かす
この回の課題
パスワードをSHA-256でハッシュ化して保存し、入力をハッシュ化して一致するかで照合してみよう。
コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。
自分のPCでも続けてみませんか
Windows版 InsightPy は Python を同梱しているので、環境構築なしで同じコードを書いて実行できます。 書いたコードを保存しておけるほか、ステップ実行で変数の変化を1行ずつ確かめられます。 個人の学習や私的な目的でのご利用は、31日目以降も無料です(スクリプトの保存は10本まで)。 このブラウザ版の学習センターも、引き続き無料でお使いいただけます。