Drupal密码散列与现有散列不匹配


Drupal password hash not matching existing hash

当登录到我设置的Drupal实例(Drupal 7.22)时,我一直得到一个无效的用户名/密码错误。我试过更改密码和其他用户,但无济于事。

特别奇怪的是,当Drupal实例运行在其他服务器上(它连接到远程数据库)时,我能够登录到相同的Drupal实例。我能够成功登录的两台计算机都是Linux机器,而另一台不能工作(运行MAMP的OS X)。代码库也是相同的。

我做了一些调试,发现在登录时创建的验证哈希值与存储在数据库中的哈希值不相同。我在password.inc中找到了_password_itoa64方法,并放弃了调试单个字符匹配的尝试。

有没有人遇到过类似的事情,或者有任何想法为什么哈希会不同?

原因在不同的PHP版本中。旧版本(5.2或5.3 AFAIK)在"crypt"模块中有周散列算法,后来更新了。