ПАРОЛЬ ПО УМОЛЧАНИЮ против ПАРОЛЯ BCRYPT
В чем разница между PASSWORD_DEFAULT и PASSWORD_BCRYPT? Используют ли они оба алгоритм шифрования Blowfish? Что такое стоимость в алгоритме? Как настроить password_hash в PHP для получения длины хэша 255 вместо 60?
4 answers
В настоящее время PASSWORD_BCRYPT
является единственным поддерживаемым алгоритмом (с использованием CRYPT_BLWFISH), поэтому в настоящее время нет разницы между PASSWORD_DEFAULT
и PASSWORD_BCRYPT
. Цель PASSWORD_DEFAULT
состоит в том, чтобы разрешить включение дополнительных алгоритмов в будущем, после чего PASSWORD_DEFAULT
всегда будет использоваться для применения самого сильного поддерживаемого алгоритма хеширования.
Стоимость связана с количеством выполняемых итераций алгоритма и влияет на скорость вычисления, а также на генерируемое значение хэша. Более высокие затраты требуют больше времени для выполнения, замедляя атаки грубой силы
В соответствии с документацией PASSWORD_DEFAULT должен быть доказательством в будущем
Из документов:
ПАРОЛЬ ПО УМОЛЧАНИЮ - Используйте алгоритм bcrypt (по умолчанию, начиная с PHP 5.5.0). Обратите внимание, что эта константа предназначена для изменения с течением времени по мере добавления в PHP новых и более сильных алгоритмов. По этой причине длина результата использования этого идентификатора может изменяться с течением времени. Поэтому рекомендуется хранить результат в столбце базы данных, размер которого может превышать 60 символов (255 персонажи были бы хорошим выбором).
На данный момент нет разницы между PASSWORD_DEFAULT и PASSWORD_BCRYPT (http://www.php.net/manual/en/password.constants.php ). Стоимость будет зависеть от количества раундов, в которых будет применен хэш. Это также объясняется в приведенной выше ссылке. Если вы хотите повысить безопасность своего хэша, вам лучше увеличить количество раундов, а не длину.
Здесь показан еще один хороший пример:
https://wwphp-fb.github.io/faq/security/passwords/
В настоящее время PASSWORD_DEFAULT
равно PASSWORD_BCRYPT
, и по мере развития языка и криптографии будут поддерживаться различные типы алгоритмов. PASSWORD_DEFAULT
будет заменен этим новым типом алгоритма (например, Argon2). Хороший выбор - всегда использовать PASSWORD_DEFAULT
.