使用PHPass生成相同的密码哈希



我正在将一个网站从Wordpress转换为Codeigner中开发的自定义CMS。有人告诉我,Wordpress使用PHPass对他们的密码进行散列,所以我使用PHPass库(如本网站所述),试图在用户不必重置或更改密码的情况下无缝转换用户。

我的应用程序运行良好,但它生成的密码哈希与Wordpress使用的密码哈希不同。我假设它与某种网站密钥有关,但我运气不好。如何使PHPass生成相同的密码哈希?

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

不过,您实际上不需要生成相同的散列——复制旧的散列,并使用PHPass的CheckPassword($pass,$hash)来检查密码。将DB中的散列作为$hash,将输入的密码作为$pass,如果匹配,则返回true。

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

有几种可能性。他们要么使用不同的哈希算法,要么对哈希进行盐析或其他模糊处理方法。如果Wordpress对他们的散列加盐,那么你必须访问他们的salt表或单个salt短语才能更改他们的散列——但我怀疑你是否能理解。我验证了PHPass确实支持salting和其他哈希模糊方法,所以其中之一可能就是你的哈希结果不完全相同的原因。

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

最新更新