В чем разница между PASSWORD_DEFAULT и PASSWORD_BCRYPT? Используют ли они оба алгоритма шифрования Blowfish? Какова стоимость в алгоритме? Как настроить пароль_hash в PHP, производят 255-хэш-длину вместо 60?
В настоящее время PASSWORD_BCRYPT
является единственным поддерживаемым алгоритмом (используя CRYPT_BLWFISH), поэтому в настоящее время нет разницы между PASSWORD_DEFAULT
и PASSWORD_BCRYPT
. Цель PASSWORD_DEFAULT
– разрешить включение дополнительных алгоритмов в будущем, после чего 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
.