我正在使用Laravel的bcrypt函数来散列密码.当我做,
bcrypt('secret')
Run Code Online (Sandbox Code Playgroud)
我明白了
=> "$2y$10$mnPgYt2xm9pxb/c2I.SH.uuhgrOj4WajDQTJYssUbTjmPOcgQybcu"
Run Code Online (Sandbox Code Playgroud)
但是,如果我再次运行它,我会得到
=> "$2y$10$J8h.Xmf6muivJ4bDweUlcu/BaNzI2wlBiAcop30PbPoKa0kDaf9xi"
Run Code Online (Sandbox Code Playgroud)
等等...
那么,如果每次都得到不同的值,密码匹配过程是否会失败?
lin*_*san 25
这是bcrypt应该如何工作.见维基百科.
Bcrypt 在散列期间生成随机的128位盐.这个盐成为哈希的一部分,因此我们总是为相同的输入字符串获得不同的哈希值.随机盐实际上用于阻止暴力攻击.
由于哈希值不同,密码匹配过程不会失败.请尝试以下内容tinker
$hash1 = bcrypt('secret')
$hash2 = bcrypt('secret')
Hash::check('secret', $hash1)
Hash::check('secret', $hash2)
Run Code Online (Sandbox Code Playgroud)
你应该进入true两种情况Hash::check.
因此,即使哈希值不同,密码匹配也不会失败.
| 归档时间: |
|
| 查看次数: |
9785 次 |
| 最近记录: |