Функция подтверждения пароля не работает все время - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь подтвердить зашифрованный пароль, но по какой-то причине он всегда недействителен.

Что я делаю не так?

Например, мой пароль будет «test», поэтому я делаю это:

$hash = '$2y$10$4Ed6XtU2E6qjzSOSUOA0xuBEA0sokTJMrDBH5ttgJzMVXSh0muoX.';
$password = 'test';

if (password_verify($password, $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}

Но пароль 'geheim123' работает с этим хешем:

$hash = '$2y$10$LY0l0pOc8vLCzI.VvxK3gOTlXoVwnP2dlAzicj9uE62Q39XfeTY/6';
$password = 'geheim123';

if (password_verify($password, $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}

В чем может быть причина того, что второй работает, а другой нет?

Здесь я шифрую свои пароли:

$pass = password_hash($_POST['password'], PASSWORD_DEFAULT)."\n";

1 Ответ

0 голосов
/ 05 июля 2018

кажется, что у вас "тестовый" пароль не содержит соли.

повторно хэшируйте свой пароль как

echo password_hash("test", PASSWORD_DEFAULT)."\n";

это дало мне это $2y$10$4a8QVv3VZNnXpgbT66I1He6eHqYBj.N94GIS7yHMoEW2Eb1Eq003O, но вы можете получить новый хэш не при запуске этого кода. но он все равно даст тот же действительный статус

    $hash = '$2y$10$4a8QVv3VZNnXpgbT66I1He6eHqYBj.N94GIS7yHMoEW2Eb1Eq003O';
$password = 'test';



if (password_verify($password, $hash)) {
    echo 'Password is valid!'; // okay
} else {
    echo 'Invalid password.';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...