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

Jij*_*ija 11 php bcrypt laravel laravel-5

如何比较两个bcrypt密码

$pass1 = '$2y$10$ooPG9s1lcwUGYv1nqeyNcO0ccYJf8hlhm5dJXy7xoamvgiczXHB7S';
Run Code Online (Sandbox Code Playgroud)

$pass2 = '$2y$10$QRgaiS6bpATKKQeT22zGKuHq.edDfXQc2.4B3v.zaN.GtGwoyQuMy';
Run Code Online (Sandbox Code Playgroud)

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

我如何检查平等.没有像这样使用文本'test'

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

var_dump(Hash::check('test', $hash1) && Hash::check('test', $hash2));
Run Code Online (Sandbox Code Playgroud)

Mar*_*tin 21

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

  • OP询问如何在原始纯文本密码未知的情况下比较两个“加密”密码。但是,此答案仅比较已知的纯文本密码。 (2认同)

Jos*_*eph 5

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


Rah*_*ath 5

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

if(Hash::check('plain-text', $hashedPassword)) {
    return true;
}
Run Code Online (Sandbox Code Playgroud)

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