Каков правильный формат для соли шифра использование склепа PHP?

Я считал информацию, предоставленную о Ручной Записи PHP для crypt(), но я нахожу меня все еще не уверенным в формате для соли для инициирования алгоритма Шифра.

Согласно ручной записи, я должен использовать '$ за 2$' или 'a$ за 2$' как запуск 16 символьных строк. Однако в примере, данном позже, они используют намного более длинную строку:'$2a$07$usesomesillystringforsalt$', который указывает мне, что независимо от того, что строка, которую я обеспечиваю, будет нарезана и нарезана кубиками для установки модели.

Проблема, с которой я встречаюсь, на самом деле инициировала алгоритм Шифра по сравнению с STD_DES. Пример:

$foo = 'foo';
$salt = '$2a$' . hash('whirlpool', $foo); // 128 characters, will be truncated
$hash = crypt($foo, $salt); 
// $hash = $26HdMTpoODt6

Тот хеш является, очевидно, не джакузи и на самом деле STD_DES только с первыми двумя символами соли, используемой для соли. Однако в примере Руководства PHP, их соль запускается с'$2a$07$', поэтому если я добавляю те три символа к тому же коду, я получаю следующее:

$foo = 'foo';
$salt = '$2a$' . hash('whirlpool', $foo); // 128 characters, will be truncated
$hash = crypt($foo, $salt); 
// $hash = $2a$07$b1b2ee48991281a439da2OHi1vZF8Z2zIA.8njYZKR.9iBehxLoIC

Я заметил, что могу обеспечить некоторое различие в символах, которые здесь показывают как'07$', например 04$ и 15$ обе работы, но 01$ через 03$ не работайте (генерирует пустую строку), и значения такой как 99$ и 85$ заставьте это возвращаться к STD_DES снова.

Вопрос:

Что является значением тех трех символов после'$2a$'строка, который, поскольку я - вывод для веры руководством, дает функции склепа команду использовать метод шифра.

Согласно руководству,'$2a$'должен быть достаточно для инструктирования crypt() использовать метод шифра; каково, тогда, значение следующих трех символов? Что тогда, правильный формат для соли, если эти три символа являются настолько значительными?

15
задан Dereleased 8 February 2010 в 23:40
поделиться

1 ответ

Номер, следующий за 2a , указывает на журнал2 количества циклов, которые необходимо выполнить. Например, 10 означает 1024 раунда. Обычно 10 - это нормально. Не используйте слишком большие числа, иначе ваш пароль будет проверяться вечно.

Смотрите Почему BCrypt.net GenerateSalt(31) сразу возвращается? для чего-то связанного. :-)

.
15
ответ дан 1 December 2019 в 04:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: