Что такое метод шифрования пароля по умолчанию Drupal?

Я пытаюсь выяснить, что такое безопасность, которую Drupal 6/7 использует по умолчанию для хранения паролей. Это MD5, AES, SHA? Я ничего не смог найти.

Solutions Collecting From Web of "Что такое метод шифрования пароля по умолчанию Drupal?"

Drupal 8 и Drupal 7 используют SHA512 по умолчанию с солью. Они многократно запускают хэш через функцию хеширования PHP, чтобы увеличить вычислительную стоимость генерации окончательного хэша паролей (метод безопасности, называемый растяжением ).

С Drupal 8 реализация объектно-ориентированная. Существует PasswordInterface, который определяет хэш-метод. По умолчанию реализация этого интерфейса находится в классе PhpassHashedPassword . Этот хэш- метод класса вызывает метод crypt, передаваемый в SHA512 в качестве алгоритма хэширования, пароля и генерируемой соли. Метод crypt класса является почти таким же, как метод _password_crypt () Drupal 7.

С Drupal 7 реализация разделяется на пару глобальных функций: user_hash_password () и _password_crypt () .

Drupal 6 использует MD5 без соли. Соответствующей функцией является user_save () .

Вот пример хеша из Drupal 7:

  • msgstr "

  • Символами 0-2 являются тип ($ S $ – Drupal 7)

  • Символ 3 – это число раундов log2 (X), основанных на позиции символа в этом списке: './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' Итак, в нашем примере «D» будет отображаться 15
  • Символами 4-11 являются СОЛЬ
  • Остальное – хэш SHA512 с использованием раундов 2 ^ X.
  • Затем двоичный результат преобразуется в строку с использованием base64.

    $ count = 1 << $ count_log2;
    $ hash = hash ($ algo, $ salt. $ password, TRUE);
    do {$ hash = hash ($ algo, $ hash. $ password, TRUE);
    } while (- $ count);

Весь процесс можно найти в: mydrupalsite \ includes \ password.inc

Его можно проверить внутри www \ includes \ password.inc

function user_check_password($password, $account) { if (substr($account->pass, 0, 2) == 'U$') { // This may be an updated password from user_update_7000(). Such hashes // have 'U' added as the first character and need an extra md5(). $stored_hash = substr($account->pass, 1); $password = md5($password); } else { $stored_hash = $account->pass; } $type = substr($stored_hash, 0, 3); switch ($type) { case '$S$': // A normal Drupal 7 password using sha512. $hash = _password_crypt('sha512', $password, $stored_hash); break; case '$H$': // phpBB3 uses "$H$" for the same thing as "$P$". case '$P$': // A phpass password generated using md5. This is an // imported password or from an earlier Drupal version. $hash = _password_crypt('md5', $password, $stored_hash); break; default: return FALSE; } return ($hash && $stored_hash == $hash); } 

Было четко написано, что «// обычный пароль Drupal 7 с помощью sha512».

Это MD5, и, насколько я понимаю, нет никакого соления. Изменить – это drupal 6. Для drupal 7 используется более продвинутое хеширование. Хорошая статья об этом здесь – http://joncave.co.uk/2011/01/password-storage-in-drupal-and-wordpress/