什么函数返回一个符合Drupal-6标准的密码哈希值?

7
我想编写一个脚本,将100个用户的用户名、邮箱和密码哈希插入Drupal 6数据库中。
阅读有关Drupal 6使用的PHP类后,我不确定能否完成这项任务。我的方法是向每个用户发送邮件,如“你好,x!你的新密码是y”,然后将哈希的“y”插入到Drupal的用户表中。
我知道Drupal返回一个MD5。但它不仅仅是对原始密码进行MD5处理,而是使用盐和其他方法混合处理密码。
我研究了Drupal使用的Portable PHP password hashing framework,但我不认为它只能通过复制+粘贴的方式工作。
所以,我的问题是:我可以编写一个PHP函数,返回有效的Drupal 6密码哈希值,以便将其插入到其用户表中吗?

1
你能否直接查看Drupal的源代码呢? - Andrey
1
你是如何理解的,我却没有理解到呢? - nevvermind
3个回答

9

实际上,Drupal 6在计算密码哈希值时并没有使用任何盐(salt)。它只是将密码简单地进行了md5哈希。

你可以自己尝试一下。设置一个密码。

计算出你的密码的md5哈希(你可以使用这个链接http://www.miraclesalad.com/webtools/md5.php来方便地计算)。

你会发现,在users表中的pass列中存储的哈希值将会完全相同

这是Drupal 6默认安装的行为(Drupal 7的行为可能已经发生了更改)。只有当你安装了一些特殊模块时,Drupal 6的行为才会有所不同。


是的,在一些更多代码的试验之后,我也意识到了这个问题。我曾经想得有点不同。嗯,我猜 md5() 应该就是我要找的答案。 - nevvermind

4

如果您正在以编程方式创建用户,则应自行创建明文密码,然后使用user_save()函数将用户插入数据库。该函数将为您哈希并保存所有内容。


@nush:看起来你是 StackOverflow 上的新手… 你可能想要“接受”一个回答。如果你认为这个(或任何其他)答案是“正确”的答案,请点击问题下面的绿色复选标记。 - Sid Kshatriya

2
现有的user import模块看起来可以用于批量导入用户。这并没有回答你“如何哈希密码”的问题,但它可以消除自定义(可能更容易出错)脚本的需要。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接