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

时间:2016-03-01 06:01:48

标签: php laravel laravel-5 bcrypt

如何比较两个bcrypt密码

$pass1 = '$2y$10$ooPG9s1lcwUGYv1nqeyNcO0ccYJf8hlhm5dJXy7xoamvgiczXHB7S';

并且

$pass2 = '$2y$10$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));

5 个答案:

答案 0 :(得分:19)

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

答案 1 :(得分:5)

您实际上无法将两个加密的bcrypt密码直接比较为字符串,因为加密包含盐,每次都会使哈希值不同。

答案 2 :(得分:4)

您只需使用Hash::check()方法即可 例如:

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

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

答案 3 :(得分:2)

您可以尝试这种方式:

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

答案 4 :(得分:0)

您可以使用 Hash 比较哈希加密密码。

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

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