什么是Drupal的默认密码encryption方法?

我试图找出默认情况下Drupal 6/7使用哪些安全性来存储密码。 是MD5,AES,SHA吗? 我一直无法find任何东西。

Drupal 8和Drupal 7默认使用SHA512。 他们通过PHP的哈希函数多次运行哈希来增加生成密码的最终哈希(一种称为拉伸的安全技术)的计算成本。

在Drupal 8中,实现是面向对象的。 有一个PasswordInterface定义了一个哈希方法。 该接口的默认实现位于PhpassHashedPassword类中。 该类的哈希方法调用SHA512中传递的crypt方法作为哈希algorithm,密码和生成的salt。 这个类的crypt方法几乎和Drupal 7的_password_crypt()方法一样。

在Drupal 7中,实现被分成几个全局函数: user_hash_password()和_password_crypt() 。

Drupal 6使用不含盐的MD5。 相关的函数是user_save() 。

下面是Drupal 7的一个例子:

  • “pass”:“$ S $ Dxl65W9p07LfQU7jvy5CnsyDpMoLujiAgzy123khcg1OJi / P9pKS”

  • 字符0-2是types($ S $是Drupal 7)

  • 字符3是基于该列表中字符的位置的log2轮次(X)的数量:'./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'因此,在我们的例子中,'D'将映射到15
  • 字符4-11是盐
  • 其余的是使用2 ^ X轮的SHA512哈希。
  • 二进制结果然后使用base64转换为一个string。

    $ count = 1 << $ count_log2;
    $ hash = hash($ algo,$ salt。$ password,TRUE);
    做{$ hash = hash($ algo,$ hash。$ password,TRUE);
    ( – $ count);

整个过程可以在:mydrupalsite \ includes \ password.inc中find

可以在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/