SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【php】cryptでBLOWFISH

問題

パスワードのハッシュ生成、照合は、cryptでBLOWFISH使えとか、password_hashを使えとか聞くけど、どうやるの?

php-logo

答え

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ということ。

関連するメモ

コメント