如何比较 laravel 中的两个加密 (bcrypt) 密码

How to compare two encrypted(bcrypt) password in laravel

如何比较两个bcrypt密码

$pass1 = 'y$ooPG9s1lcwUGYv1nqeyNcO0ccYJf8hlhm5dJXy7xoamvgiczXHB7S';

$pass2 = 'y$QRgaiS6bpATKKQeT22zGKuHq.edDfXQc2.4B3v.zaN.GtGwoyQuMy';

$pass1 和 $pass2 都是 'test' 的 bcrypt。

我如何检查相等性。不使用像这样的文本 'test'

$hash1 = Hash::make('test');
$hash2 = Hash::make('test');

var_dump(Hash::check('test', $hash1) && Hash::check('test', $hash2));

您实际上不能将两个加密的 bcrypt 密码作为字符串直接相互比较,因为加密包含盐分,这使得每次的哈希值都不同。

if(Hash::check('plain-text-password',$cryptedpassword)) {
    // Right password
} else {
    // Wrong one
}

你可以简单地使用Hash::check()方法 例如:

if(Hash::check('plain-text', $hashedPassword)) {
    return true;
}

参考https://laravel.com/docs/5.5/hashing

你可以这样试试:

if (Hash::check('test', bcrypt('test'))) {
    return 'match!!';
}else{
    return 'not match!!';
}

您可以使用Hash比较散列加密密码。

但请注意,在此方法中 第一个值应该是 plain-text 和第二个 bcrypt 值。

Hash::check('test', bcrypt('test'))