Комментарии 13
То есть теперь надо не только проверить пароль, но еще и проверить, а не изменился ли алгоритм.
Не совсем понятно, что будет, если изменится PASSWORD_DEFAULT.
Не совсем понятно, что будет, если изменится PASSWORD_DEFAULT.
password_verify($password, $hash)
вернет FALSE? А что вернет password_needs_rehash($hash, PASSWORD_DEFAULT)
?+1
Ни разу не писал на PHP, но почему-то кажется, исходя из наличия метода password_get_info(), что в $hash хранится алгоритм, и эти сведения используются в password_verify
0
password_verify — не зависит от PASSWORD_DEFAULT, так как алгоритм по которому получен хеш вместе с параметрами храниться в самой переменной $hash.
Поэтому если password_verify вернул FALSE, то значит пароль не верный. А если пароль правильный, тогда можно сделать проверку не обновился ли алгоритм password_needs_rehash, и тогда сохранить новый хеш.
Поэтому если password_verify вернул FALSE, то значит пароль не верный. А если пароль правильный, тогда можно сделать проверку не обновился ли алгоритм password_needs_rehash, и тогда сохранить новый хеш.
0
Что сложного то нашли в crypt? простая как две копейки
0
<?php $hash = md5($password . $salt); // works, but dangerous
А если так:
$hash = md5($password .md5($salt));
$hash = md5(md5($password) .md5($salt));
???-5
Абсолютно то же самое
+1
Специально проверил:
Абсолютно не тоже самое…
<?php
$password = 'vnkG767dfd';
$salt = 'vnsiRfdR45';
$hash1 = md5($password . $salt); //43a47c25ddeb356f4f01889a06bb01ff
$hash2 = md5($password .md5($salt));//ac34660393373c58cc33d295c2b8202b
$hash3 = md5(md5($password) .md5($salt));//67ba6ba0ec1fa56c9857ccf75a462ce3
Абсолютно не тоже самое…
-4
1. Слишком быстро.
2. md5 x md5 увеличивает вероятность коллизий.
2. md5 x md5 увеличивает вероятность коллизий.
0
Использующие phpldapadmin с этой функцией уже немного познакомились, благо связанная с этим проблема легко исправима.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Хэширование паролей в PHP 5.5 с использованием нового API