Pull to refresh

Comments 13

То есть теперь надо не только проверить пароль, но еще и проверить, а не изменился ли алгоритм.
Не совсем понятно, что будет, если изменится PASSWORD_DEFAULT. password_verify($password, $hash) вернет FALSE? А что вернет password_needs_rehash($hash, PASSWORD_DEFAULT)?
Ни разу не писал на PHP, но почему-то кажется, исходя из наличия метода password_get_info(), что в $hash хранится алгоритм, и эти сведения используются в password_verify
password_verify — не зависит от PASSWORD_DEFAULT, так как алгоритм по которому получен хеш вместе с параметрами храниться в самой переменной $hash.

Поэтому если password_verify вернул FALSE, то значит пароль не верный. А если пароль правильный, тогда можно сделать проверку не обновился ли алгоритм password_needs_rehash, и тогда сохранить новый хеш.
Спасибо за объяснение.
Что сложного то нашли в crypt? простая как две копейки
<?php
$hash = md5($password . $salt); // works, but dangerous

А если так:
$hash = md5($password .md5($salt));
$hash = md5(md5($password) .md5($salt));
???
Специально проверил:
<?php
$password 	= 'vnkG767dfd';
$salt 		= 'vnsiRfdR45';

$hash1 = md5($password . $salt); //43a47c25ddeb356f4f01889a06bb01ff
$hash2 = md5($password .md5($salt));//ac34660393373c58cc33d295c2b8202b
$hash3 = md5(md5($password) .md5($salt));//67ba6ba0ec1fa56c9857ccf75a462ce3

Абсолютно не тоже самое…
С точки зрения безопасности — одинаково легко перестроить радужную таблицу по любому предложенному вами алгоритму.
Я читал вашу первую статью. Из нее я не смог понять почему так делать бессмысленно(не зря я вопросы в конце поставил). Вот тут нашел полезный материал, теперь стало все более-менее понятно. Так что, да. Так как я спрашивал — лучше не делать.
1. Слишком быстро.
2. md5 x md5 увеличивает вероятность коллизий.
Использующие phpldapadmin с этой функцией уже немного познакомились, благо связанная с этим проблема легко исправима.
Sign up to leave a comment.

Articles

Change theme settings