Я пытаюсь полностью понять password_hash, чтобы иметь возможность объяснить это для аудитора.
Основываясь на моих поисках ответа, я понимаю, что функция password_hash()
является оболочкой для crypt()
. Читая руководство по PHP для предопределенных констант, я вижу, что оно использует PASSWORD_BCRYPT
в качестве целочисленное значение по умолчанию (в основном он использует алгоритм CRYPT_BLOWFISH
для хеширования пароля).
Что меня смущает, так это то, что переменная $options
, если ее не указать, генерирует случайную соль, а стоимость будет установлена на 10
. Если я укажу более высокую стоимость (например: 12
), будет ли она по-прежнему генерировать случайную соль, поскольку я не указываю значение соли? Причина, по которой я здесь запутался, заключается в том, что я не пропускаю $options
, а вместо этого указываю другую стоимость.
Другие мои вопросы:
- Почему увеличение стоимости увеличивает безопасность?
- Как, поскольку
password_hash()
является односторонней хеш-функцией,password_verify()
проверяет пароль, поскольку соль является случайной? - Является ли
CRYPT_SHA512
более сильным, чемCRYPT_BLOWFISH
для хеширования?
PASSWORD_DEFAULT
на самом деле является значением по умолчанию. Это то же значение, что иPASSWORD_BCRYPT
в текущей версии PHP, но оно может измениться в будущих версиях. - person GolezTrol   schedule 06.08.2014