Hash :: make不会为同一输入生成相同的值

时间:2015-03-18 13:21:09

标签: php hash laravel-5

我的代码$pass$confirm_pass具有相同的输入,但在散列后具有不同的值。

$pass = '12345678';

$Password = **Hash::make**($pass);
//after hashing: $2y$10$acEYvpJSbaftfrabwBCNruCW32lkJejBdT92jQVSNIMeL7gtPvseK

$confirm_pass = '12345678';

$Password_Confirmation = **Hash::make**($confirm_pass);
//after hashing: $2y$10$HcCvNiwlZAUnt9RgQuXJ1.06H8ri8HdUa3tzbCCe9jvs3PtBHWGJK

我在验证后得到这一行:

  

{"密码":[" 密码确认不符合。"]}

2 个答案:

答案 0 :(得分:1)

即使密码相同,

Hash::make()也不会生成相同的哈希,因为每个哈希都是单独加盐的,因此Hash :: Make()的每个输出都是不同的。

正如Nishant所说,您需要使用Hash::check()来验证哈希值

答案 1 :(得分:0)

从laravel安全文档中我找到了以下代码,

创建哈希密码,使用下面的代码

$password = Hash::make($pass);

并验证

if (Hash::check($pass, $password))
{
    // The passwords match...
}

可以从中找到进一步的文件 http://laravel.com/docs/4.2/security