#66

ハッシュとパスワード保存

パスワードを平文で保存せず、ハッシュ値で照合する仕組みを学びます。

解説

正しく作られたシステムは、パスワードそのものを保存しません。代わりにハッシュ関数(ここではSHA-256)で計算したハッシュ値を保存します。 ログイン時は入力されたパスワードを同じ方法でハッシュ化し、保存値と一致するかを比べます。こうすればデータが漏えいしても元のパスワードは分かりません。 平文を保存しないことが安全設計の基本です。実運用ではさらに「ソルト」を加えますが、まずはこの一方向照合の流れを理解しましょう。

書き方

hashlib.sha256(バイト列) — SHA-256ハッシュを計算するオブジェクトを返す。
・文字列.encode(): 文字列をバイト列に変換(ハッシュ化に必要)。
・.hexdigest(): ハッシュ値を16進文字列で取り出す。
・== でハッシュ値どうしを比較して照合する。

書いて動かす

この回の課題

パスワードをSHA-256でハッシュ化して保存し、入力をハッシュ化して一致するかで照合してみよう。

コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。

自分のPCでも続けてみませんか

Windows版 InsightPy は Python を同梱しているので、環境構築なしで同じコードを書いて実行できます。 書いたコードを保存しておけるほか、ステップ実行で変数の変化を1行ずつ確かめられます。 個人の学習や私的な目的でのご利用は、31日目以降も無料です(スクリプトの保存は10本まで)。 このブラウザ版の学習センターも、引き続き無料でお使いいただけます。