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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是Drupal的默认密码加密方法?相关的知识,希望对你有一定的参考价值。

我试图弄清楚Drupal 6/7默认使用什么安全性来存储密码。是MD5,AES,SHA吗?我一直找不到任何东西。

答案

Drupal 8和Drupal 7默认使用SHA512和盐。它们通过phphash函数多次运行哈希,以增加生成密码的最终哈希(称为stretching的安全技术)的计算成本。

使用Drupal 8,实现是面向对象的。有一个PasswordInterface定义了一个哈希方法。该接口的默认实现位于PhpassHashedPassword类中。该类'hash方法调用传递SHA512的crypt方法作为散列算法,密码和生成的盐。类的crypt方法与Drupal 7的_password_crypt()方法几乎相同。

使用Drupal 7,实现分为几个全局函数:user_hash_password()_password_crypt()

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

另一答案

以下是Drupal 7的示例哈希:

  • “通过”:“$ S $ Dxl65W9p07LfQU7jvy5CnsyDpMoLujiAgzy123khcg1OJi / P9pKS”
  • 字符0-2是类型($ S $是Drupal 7)
  • 字符3是基于此列表中char的位置的log2轮数(X):'。0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'所以在我们的示例中'D'将映射到15
  • 字符4-11是SALT
  • 其余的是使用2 ^ X轮的SHA512哈希。
  • 然后使用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);
}

它清楚地写着“//使用sha512正常的Drupal 7密码。”

另一答案

它是MD5,据我所知,没有任何盐渍使用。编辑 - 这是drupal 6.对于drupal 7,使用了一些更高级的哈希。这里有一篇好文章 - http://joncave.co.uk/2011/01/password-storage-in-drupal-and-wordpress/

另一答案

drupal 8正在使用Phpass(修改版)

drupal 7使用SHA-512 +盐

drupal 6和之前的版本使用md5,没有盐

以上是关于什么是Drupal的默认密码加密方法?的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 6 视图 2:PHP 片段

Javascript代码片段在drupal中不起作用

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

WPYOU主题加密码代码的解码

将密码从 Drupal 7 迁移到 Django

使用 aes_256_cbc 密码加密时的默认 IV 是啥?