Laravel 5: 同じ文字列に bcrypt を使用すると異なる値が返される 質問する

Laravel 5: 同じ文字列に bcrypt を使用すると異なる値が返される 質問する

私はパスワードのハッシュ化にLaravelのbcrypt機能を使用しています。

bcrypt('secret')

私は

=> "$2y$10$mnPgYt2xm9pxb/c2I.SH.uuhgrOj4WajDQTJYssUbTjmPOcgQybcu"

しかし、もう一度実行すると、

=> "$2y$10$J8h.Xmf6muivJ4bDweUlcu/BaNzI2wlBiAcop30PbPoKa0kDaf9xi"

等々...

では、毎回異なる値を取得すると、パスワードの照合プロセスは失敗しませんか?

ベストアンサー1

これがbcrypt本来の動作です。ウィキペディア

Bcryptはランダム 128 ビット ソルトハッシュ中に。これはハッシュの一部となるため、同じ入力文字列に対して常に異なるハッシュ値が得られます。ランダムソルトは実際には、ブルートフォース攻撃

ハッシュ値が異なるため、パスワード照合プロセスが失敗することはありません。次の操作を試してください。tinker

$hash1 = bcrypt('secret')
$hash2 = bcrypt('secret')

Hash::check('secret', $hash1)
Hash::check('secret', $hash2)

true両方のケースで取得する必要がありますHash::check

したがって、ハッシュ値が異なっていても、パスワードの照合は失敗しません。

おすすめ記事