我将我的密码存储为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条件时,我总是变得虚假。
我在做什么错误?
答案 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);