Как сравнить два зашифрованных пароля (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));
9
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;
}
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