2

我正在将网站从 Wordpress 转换为在 Codeigniter 中开发的自定义 CMS。有人告诉我,Wordpress 使用 PHPass 来散列他们的密码,所以我使用 PHPass 库(如本网站所述)试图无缝地转换用户,而无需他们重置或更改密码。

我让它在我的应用程序中运行良好,但它没有生成与 Wordpress 使用的相同的密码哈希。我假设它与某种站点密钥有关,但我没有任何运气。如何让 PHPPass 生成相同的密码哈希?

4

2 回答 2

8

您将无法让 PHPass 两次生成相同的哈希 - 它使用随机盐。该盐存储在密码哈希中。

不过,您实际上并不需要生成相同的哈希值 - 复制旧的哈希值,然后使用 PHPass 的 CheckPassword($pass, $hash) 来检查密码。将数据库中的哈希作为 $hash 并将密码输入为 $pass,如果它们匹配,它将返回 true。

HashPassword() 方法仅用于创建新密码哈希(用于新密码),而不是与现有密码进行比较。

于 2012-06-08T05:03:30.483 回答
0

有几种可能性。他们要么使用不同的散列算法,要么对散列进行加盐或其他一些混淆方法。如果 Wordpress 对他们的哈希值加盐,那么你必须访问他们的盐表或单个盐词来改变他们的哈希值——但我怀疑你会明白这一点。我验证了 PHPass 确实支持加盐以及其他哈希混淆方法,因此其中之一可能是您的哈希值不一致的原因。

http://www.openwall.com/articles/PHP-Users-Passwords

于 2012-02-29T21:35:05.873 回答