Код:PHP password_hash функция солевой длины 21 или 22?
echo password_hash("stackoverflow", PASSWORD_DEFAULT, ['salt' => 'twenty-one-characters']);
Результат:
Warning: password_hash(): Provided salt is too short: 21 expecting 22
код:
echo password_hash("stackoverflow", PASSWORD_DEFAULT, ['salt' => 'twenty-one-charactersA']);
Результат:
$2y$10$dHdlbnR5LW9uZS1jaGFyYOVyX13hK9eb4/KXMAkHsAJX..YR7t/32
код:
echo password_hash("stackoverflow", PASSWORD_DEFAULT, ['salt' => 'twenty-one-charactersB']);
$2y$10$dHdlbnR5LW9uZS1jaGFyYOVyX13hK9eb4/KXMAkHsAJX..YR7t/32
Вопрос:
Как вы видите, с помощью добавления A и B 21 символьных строк мы создали две различные соли 22 символов, но, хеши же! Это 22-й символ игнорируется? Если он игнорируется, то почему он спрашивает соль 22 соли?
Почему вы сажаете себя и не используете по умолчанию? –
Прочитайте заметки на [blowfish] (http://php.net/manual/en/function.crypt.php) алгоритм по умолчанию для деталей соли 22 символов –