Я считал информацию, предоставленную о Ручной Записи 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()
использовать метод шифра; каково, тогда, значение следующих трех символов? Что тогда, правильный формат для соли, если эти три символа являются настолько значительными?
Номер, следующий за 2a
, указывает на журнал2 количества циклов, которые необходимо выполнить. Например, 10 означает 1024 раунда. Обычно 10 - это нормально. Не используйте слишком большие числа, иначе ваш пароль будет проверяться вечно.
Смотрите Почему BCrypt.net GenerateSalt(31) сразу возвращается? для чего-то связанного. :-)
.