mysql — laravel php pbkdf2 аутентификация входа

У меня есть существующая таблица с хеш-паролем, использующая hash_pbkdf2. Для регистрации пользователя, он успешно вставлен в MySQL

$string = mcrypt_create_iv(24, MCRYPT_DEV_URANDOM);
$salt = strtoupper(bin2hex($string));
$hash = hash_pbkdf2("sha1", $data['password'], $string, 1000, 24, true);
$hash = strtoupper(bin2hex($hash));

return User::create([
'name' => $data['name'],
'email' => $data['email'],
'hashedpassword' => $hash,
'salt' => $salt,
]);

У меня возникли проблемы при входе с помощью вот мой код

$found_salt = DB::table('users')->where('email', '[email protected]')->first();
$salt = $found_salt->salt;

echo "Salt : ".$salt."<br>";
$hash = hash_pbkdf2("sha1", "password", $salt, 1000, 24, true);
$hash = strtoupper(bin2hex($hash));

$userlogin = [
'email' => "[email protected]",
'hashedpassword' => $hash
];
echo "Hash : ".$hash."<br>";

if(Auth::attempt($userlogin)) {
echo "success";
} else {
echo "not success";
}

Значение соли такое же, но значение хеша не совпадает. Надеюсь, кто-то может помочь. Благодарю.

0

Решение

В первом блоке кода вы солите свой пароль со значением $ string вместо $ salt, но сохраняете $ salt в базе данных.

Поэтому я думаю, вам нужно изменить это в вашем первом блоке кода:

$hash = hash_pbkdf2("sha1", $data['password'], $string, 1000, 24, true);
в
$hash = hash_pbkdf2("sha1", $data['password'], $salt, 1000, 24, true);

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]