比较哈希值以检查它是否相等

时间:2014-12-30 10:22:16

标签: php laravel hash laravel-4

我将我的密码存储为BCrypt(Laravel自己的方式)

$NewValue = Hash::make(Input::get('Password'));

$OldValue = Auth::user()->password;  // Taking the value from database
if($NewValue == $OldValue)
{
return 'Both Password are equal'
}
else
{
//go for other operation
}

但每当我检查if条件时,我总是变得虚假。

我在做什么错误?

2 个答案:

答案 0 :(得分:2)

每次调用Hash::make时,Laravel的哈希函数都会生成一个新的哈希值。在内部,它会调用password_hash,然后使用crypt。它将始终生成随机盐。 salt包含在最终哈希中,因此在比较时,可以对其进行解析并再次使用它来生成相同的哈希值。

要验证密码,您需要使用Hash::check(),然后使用password_verify

$password = Input::get('Password');
$hashedPassword = Auth::user()->password;  // Taking the value from database

if(Hash::check($password, $hashedPassword))
{
    return 'Both Password are equal'
}
else
{
    //go for other operation
}

答案 1 :(得分:1)

使用Hash::check()根据哈希验证密码。

Hash::check('secret', $hashedPassword);

Docs - Security - Storing passwords

相关问题