Как сравнить два зашифрованных пароля (bcrypt) в laravel


Как сравнить два пароля bcrypt

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

И

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

Оба $pass1 и $pass2 являются bcrypt для "теста".

Как я могу проверить равенство. без использования текста "тест", подобного этому

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

var_dump(Hash::check('test', $hash1) && Hash::check('test', $hash2));
Author: Jija, 2016-03-01

4 answers

На самом деле вы не можете сравнивать два зашифрованных пароля bcrypt друг с другом напрямую в виде строк, потому что шифрование содержит соль, которая каждый раз делает хэши разными.

 5
Author: Joseph, 2016-03-01 06:43:44
if(Hash::check('plain-text-password',$cryptedpassword)) {
    // Right password
} else {
    // Wrong one
}
 13
Author: Martin, 2016-04-21 18:32:34

Вы можете просто использовать метод Hash::check() , например:

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

Ссылка https://laravel.com/docs/5.5/hashing

 2
Author: Rahul Reghunath, 2017-09-27 11:08:27

Вы можете попробовать так:

if (Hash::check('test', bcrypt('test'))) {
    return 'match!!';
}else{
    return 'not match!!';
}
 0
Author: bharat, 2018-09-19 10:04:58