まずは、ハッシュ化するパスワードを決めましょう。暗号化やハッシュ化する前の人間が読める形のデータを「平文」と呼びます。
※実際に使用しているパスワードは入力しないでください!
パスワードに追加するランダムな文字列を生成します。この文字列を「ソルト」と呼びます。ソルトを使うことで、同じパスワードでも異なるハッシュ値を生成し、安全性を高めることができます。
| ハッシュ① | |
|---|---|
| ハッシュ② | |
| ハッシュ③ |
生成されたソルトを使って平文のパスワードをハッシュ化します。これにより、パスワードはそのまま保存されず、ハッシュ値として保存されるため安全です。
| 元のパスワード | × | ソルト | = | ハッシュ値 | |
|---|---|---|---|---|---|
| ハッシュ① | × | = | |||
| ハッシュ② | × | = | |||
| ハッシュ③ | × | = |
データベースには、生成したソルトとハッシュ値を結合して保存します。この方法により、同じパスワードであっても異なるソルトが使われている限り、ハッシュ値も異なります。
| データベースに保存する形式 | |
|---|---|
| ハッシュ① | |
| ハッシュ② | |
| ハッシュ③ |
データベースに保存されたデータからソルトを取り出し、入力されたパスワードで新たなハッシュ値を生成します。
| 再生成ハッシュ | 保存ハッシュ | 一致結果 | |
|---|---|---|---|
| ハッシュ① | |||
| ハッシュ② | |||
| ハッシュ③ |