Читая этот отличный ответ о хешировании паролей, и задаваясь вопросом, как для его реализации:
Злая блоха написала:
Создайте одноразовый номер для каждого пользователя; только это побеждает радужный стол. Это случайное число, которое в зависимости от диапазона увеличивает количество получаемых хешей.
Значит, в моей базе данных хранится уникальный токен, помимо пароля пользователя?
Пример кода в исходном посте:
function hash_password($password, $nonce) {
global $site_key;
return hash_hmac('sha512', $password . $nonce, $site_key);
}
Как я могу подтвердить пароль с помощью этого кода? Позвольте мне объяснить:
Когда пользователь отправляет свой пароль, мне нужно сгенерировать его хэш, чтобы проверить существующую строку базы данных, где адрес электронной почты и хешированный пароль совпадают. Как выбрать эту строку, если я ничего не знаю о $nonce
пользователей? Я что-то упускаю? Может быть, мне нужно выбрать пользователя только по его адресу электронной почты, а затем проверить хеш-пароль позже?
Кстати, вы рекомендуете этот метод хеширования?