>>> Hash::make('password')
=> "$2y$10$Vp7RA3EoThTrlu5JecW1kOkTZQOjVDCtbM.9LysfrZhVz.Jf.53Y."
>>> Hash::make('password')
=> "$2y$10$OlX/8PgvSNN6drM4jVa6XeKQ/q5FKCi8zhMi/Dt7vrz6JPHU/EK4C"
>>> Hash::make('password')
=> "$2y$10$svoJrNRmlEX2XWGU4G4MzekDOvJLJW9uSC2SY98bXad2cSqge.MGK"
谁能帮我理解为什么 Hash::make 在每次执行时都给出不同的哈希值?
是否涉及基于时间或随机的组件。
我的 config/hashing.php 有默认值。
'driver' => 'bcrypt',
'bcrypt' => [
'rounds' => env('BCRYPT_ROUNDS', 10),
],
'argon' => [
'memory' => 1024,
'threads' => 2,
'time' => 2,
],
答案 0 :(得分:2)
您的 Hash::make()
函数正在使用 bcrypt
散列算法,正如配置所定义的那样。
Bcrypt 通过设计为相同的输入生成不同的输出。 这不是错误,而是功能。 :-)
要根据先前生成的哈希(例如您在注册期间存储的内容)验证纯文本输入(例如从登录表单输入密码),请使用 {{3} }.
答案 1 :(得分:2)
Hash:make
将所谓的“盐”添加到哈希中,用于在每次调用时获得不同的结果以提高安全性。
在您使用 bcrypt 的情况下,您可以通过加密字符串开头的 $2y$
识别它,然后是复杂性 (10) 和盐。
如果你想更深入地了解它是如何工作的,维基百科有一篇很棒的文章: This image is a screenshot of the error along with my page that it is saying the error is on and my dependencies
答案 2 :(得分:1)