【php】cryptでBLOWFISH
問題
パスワードのハッシュ生成、照合は、cryptでBLOWFISH使えとか、password_hashを使えとか聞くけど、どうやるの?
答え
password_hashが使えない古い環境もあるので、cryptを使う場合だと、以下のような感じ。
1、cryptでハッシュ生成
//$2y$ = BLOWFISHしてくれ + 04 = コストは4で + $ + salt(22文字) crypt('aaaaaaaaaaaaa', '$2y$04$softelsoftelsoftelsoft');
以下のようなハッシュを生成してくれるので、これをこのままDBなどに保存してよい。
$2y$04$softelsoftelsoftelsofet7reWbIkU/BauNoa83.p4K.oiw0hSCe
2、cryptで照合する
照合するときは、cryptに、入力値と保存してあるハッシュを渡して、以下の結果がハッシュと一致したらOK。
crypt('aaaaaaaaaaaaa', '$2y$04$softelsoftelsoftelsofet7reWbIkU/BauNoa83.p4K.oiw0hSCe');
以下のような雰囲気のコードだけで済む。コードはとても簡単。
if (crypt($str, $hash) === $hash) { echo '正しいパスワードです'; } else { echo 'パスワードが間違っています'; }
ハッシュの左側に、アルゴリズムとソルトが入っているので、入力値とハッシュを渡してハッシュを生成して、同じハッシュができたらOKということ。
コメント