2013-06-01 10 views
6

新しいPHPパスワードAPIのpassword_verify()関数は、パスワードがハッシュに対応するかどうかを確認します。ハッシュはpassword_hash()によって生成され、デフォルトではランダムな塩とcost = 10が使用されます。パスワードとパスワードを知らなくても、password_verifyでパスワードの検証ができますか?

私はいつも(私はそれを勉強したことはないが)データベース内に塩を保存し、パスワードを確認したいときは、同じコストで指定の塩でハッシュすることを考えました。どのようにpassword_verify()塩とコストを知らずにパスワードを確認することができますか?

答えて

6

password_hash()によって返される文字列には、ハッシュだけでなく、アルゴリズム、コスト、および塩も含まれます。

+0

...それは#$ @%の素晴らしいアイデアです...なぜ誰も以前にそれを考えていなかったのですか?私は "パスワードバージョン"も保存すると思っていたので、アルゴリズムを変更すると "古いハッシュ"を持つ人はログインすることができました...しかし、このAPIを使うと、すべてのことをする必要はありません! –

+1

はい、うまくいけば、PHP開発者は最終的に 'md5()'を退職させることになります。 –

+0

@LucasMalor - これは新しい発明ではなく、PHPの関数 'crypt()'はこれをいつも好きでした。これは 'password_hash()'の背後にある働き関数です。 – martinstoeckli

関連する問題