Где хранится соль для password_hash?

Согласно (относительно) новой документации PHP:

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

Документация по функциям ничего не говорит о взаимодействии с БД, и, поскольку я думаю, что хранение пользовательских данных масштабируется только с БД, где, черт возьми, эта функция хранит случайную соль? txt файл как данные сеанса?

6

Решение

Давайте узнаем на примере того, что все остальные говорят вам:

$options = [
'cost' => 11,
'salt' => 'abcdefghijklmnopqrstuv',
];
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT, $options)."\n";

Выход:

$ 2y $11$ABCDEFGHIJKLMNOPQRSTUu7aZVUzfW85EB4mHER81Oudv / rT.rmWm

Части, выделенные полужирным шрифтом, — это ваша стоимость и соль, соответственно вложенные в полученный хеш.

Вы можете плюнуть это обратно в password_verify и он будет обрабатывать это соответственно:

print_r(password_verify('rasmuslerdorf', '$2y$11$abcdefghijklmnopqrstuu7aZVUzfW85EB4mHER81Oudv/rT.rmWm')); // true
8

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

пароль_хеш руководство состояния

Используемый алгоритм, стоимость и соль возвращаются как часть хэша.
Поэтому вся информация, необходимая для проверки хеша
включены в это. Это позволяет функции password_verify () проверять
хеш без необходимости отдельного хранения для соли или алгоритма
Информация.

Поэтому соль уже включена в хэш, который вы сохраняете в БД.

3

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