我正在将网站从Wordpress转换为在Codeigniter中开发的自定义CMS。我被告知Wordpress使用PHPass来散列他们的密码,所以我使用PHPass库(如this site所述)试图无需转换用户,无需重置或更改密码。
我在我的应用程序中运行良好,但它没有生成与Wordpress使用相同的密码哈希值。我假设它与某种网站密钥有关,但我没有运气。如何让PHPass生成相同的密码哈希?
答案 0 :(得分:8)
您将无法让PHPass生成相同的哈希两次 - 它使用随机盐。该salt存储在密码哈希中。
你真的不需要生成相同的哈希 - 复制旧的哈希,并使用PHPass的'CheckPassword($ pass,$ hash)来检查密码。将数据库中的哈希值作为$ hash并输入密码作为$ pass,如果它们匹配则返回true。
HashPassword()方法仅用于创建新密码哈希(用于新密码),而不是与现有密码进行比较。
答案 1 :(得分:0)
有几种可能性。他们要么使用不同的哈希算法,要么正在使用哈希或其他混淆方法。如果Wordpress腌制它们的哈希值,那么你必须获得他们的盐表或单个盐词以改变它们的哈希值 - 但我怀疑你会得到它。我确认PHPass确实支持salting以及其他散列混淆方法,因此其中一个可能就是你的哈希值不相同的原因。