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

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

$pass1 = 'y$ooPG9s1lcwUGYv1nqeyNcO0ccYJf8hlhm5dJXy7xoamvgiczXHB7S';

и

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

4 ответов


вы не можете сравнивать два зашифрованных пароля 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!!';
}