2015-02-20 3 views
3

Согласно (относительно) новой PHP документации:Где соль хранится для password_hash?

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

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

+8

Использование по умолчанию, соль хранится в хэш. Вы прочитали «сказочное» руководство, верно? Я имею в виду, полностью? –

+3

* «Документация по функциям ничего не говорит о взаимодействии с БД» * - Почему это должно быть? Это твоя работа. * Keep on Truckin '! *, Я имею в виду * Googlin'! * ;-) –

+0

oh получил это .. O_O спасибо. – GameDeveloper

ответ

7

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

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

Выход:

$ 2y $ $ ABCDEFGHIJKLMNOPQRSTU u7aZVUzfW85EB4mHER81Oudv/rT.rmWm

Жирные части - это ваши затраты и соль, соответственно встроенный в полученный хеш.

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

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

Повысьте стоимость, повышайте нагрузку на процессор ;-) Положите это до 50 и посмотрите, сколько времени займет хэш, что щенок lol –

+0

@ Fred-ii- Ха-ха, я просто вытащил его из одного из примеров в документах, а затем изменил сгенерированный хеш на известное значение. – sjagr

+0

Помню, что для стоимости стоило 20 штук, потребовалось 20-30 секунд для обработки lol Одна секунда за дополнительную стоимость или равную 20? Это звучит примерно так :-) –

2

password_hash manual В состоянии

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

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

+3

Да, это было сказано и в большей степени, чем один ;-) Если бы я знал, я бы сделал свой «комментарий» «ответом» и обналичен в большом количестве времени! * woohoo! * –

Смежные вопросы