Я прочитал множество вопросов и руководств о шифровании пароля, и хотя я многому научился, нигде не нашел ответа на этот вопрос.
Я хочу использовать crypt() для хеширования пароля, который я буду хранить в базе данных. Я также знаю, что мне нужно использовать соль, чтобы она работала правильно, и я читал, что лучший способ создать случайную соль — это использовать этот или что-то подобное.
Если я правильно понял процесс такой:
- Пользователь вводит пароль
- Случайное создание соли
- Хэш-пароль и соль
- Сохранить результат в базе данных
Но как мне восстановить соль, когда пользователь пытается войти в систему?
- Пользователь вводит свой пароль
- Я каким-то образом добавляю его собственную уникальную случайно сгенерированную соль
- Перемешать их обоих вместе
- Сравните его с хэшированным паролем, хранящимся в базе данных.
В нескольких вопросах, которые я нашел, один из ответов заключался в том, чтобы хранить случайно сгенерированную соль в базе данных. Но я думал, что вся цель соления состоит в том, чтобы быть более безопасным, если злоумышленник получит доступ к моей БД, он увидит поля «соли», и даже если мои пароли зашифрованы, он получит легкий доступ к учетным записям.
В других ответах говорилось, что «соль» добавляется к паролю при использовании crypt(), поэтому нет необходимости хранить ее в отдельном поле. У меня вопрос, как мне получить к нему доступ? Есть ли какая-то функция, которая делает это, и я полностью отсутствует?