password_hash каждый раз возвращает другое значение

Я делаю систему входа в систему и хочу хешировать пароли, чтобы сделать их более безопасными, но каждый раз он возвращает разные хэши, и даже не может быть проверен с помощью password_verify(), вот мой код:

$password = password_hash($password4, PASSWORD_DEFAULT);

и вот мой код для проверки:

if(password_verify($password4, $dbpassword))

1 ответ

Решение

Итак, давайте рассмотрим одну часть за раз

но каждый раз он возвращает новый хэш

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

Там нет необходимости MD5 или сделайте любое другое хеширование. Если вы хотите поднять безопасность password_hash Вы передаете более высокую стоимость (стоимость по умолчанию 10)

$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);

Как проверить

if(password_verify($password4, $dbpassword))

Так $password4 должен быть ваш пароль и $dbpassword должен быть хеш, который вы сохранили в своей базе данных

Другие вопросы по тегам