Согласно (относительно) новой документации PHP:
password_hash функция использует случайную соль (о которой мы не должны беспокоиться .. O_O), поэтому, если я правильно понимаю, соль должна где-то храниться, иначе пользователь не сможет войти после регистрации на сайте (другая соль => другой хеш.)
Документация по функциям ничего не говорит о взаимодействии с БД, и, поскольку я думаю, что хранение пользовательских данных масштабируется только с БД, где, черт возьми, эта функция хранит случайную соль? txt
файл как данные сеанса?
Давайте узнаем на примере того, что все остальные говорят вам:
$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
пароль_хеш руководство состояния
Используемый алгоритм, стоимость и соль возвращаются как часть хэша.
Поэтому вся информация, необходимая для проверки хеша
включены в это. Это позволяет функции password_verify () проверять
хеш без необходимости отдельного хранения для соли или алгоритма
Информация.
Поэтому соль уже включена в хэш, который вы сохраняете в БД.