PHP - phpass 0.2麻烦

时间:2012-06-13 13:32:09

标签: php phpass

当我的用户在注册和登录时键入密码时,我正在使用phpass。当我在Mac上本地工作时,它正在工作。

但是当我在线时对密码进行哈希处理时,就像是以错误的方式进行散列。

我已将本地数据库导入到在线数据库。当我在线时,当我在当地工作时产生的密码完美无缺。

所以..当我在网上使用phpass时,就像是完全错误了。

我正在使用它:

$hasher = new PasswordHash(8, FALSE);
$password = HashPassword($_POST["password"]);

这会给我一些类似的东西:

_zzD.NrhAaUmhr6G8i5E //when I'm local
$2a$08$mt3//cn0tqMmug/.tjKeC.AbZhYyj470EY9zSivZvNOtwk4A //when I'm online

当我检查密码时,它是这样的:

$hasher = CheckPassword($_POST["password"], $row["password"]);
//$_POST is ofc. the submitted
//$row is the password for the user from the db.
//the user is found on the username and then im checking password.

我完全不知道出了什么问题。我希望SO上有人遇到同样的问题。

1 个答案:

答案 0 :(得分:3)

  

phpass支持的首选哈希方法是基于Blowfish的bcrypt,具有回退到BSDI风格的基于DES的扩展哈希,并且是最后的手段回退到基于MD5的盐渍和变量迭代计数密码哈希在phpass本身实现< / p>

您的环境可能正在使用不同的哈希算法。您应该确保开发和生产环境都支持blowfish加密。

作为一种较弱的选择,this文章提到:

  

所有系统都支持在phpass中实现的基于MD5的盐渍和拉伸哈希。 phpass提供了一种强制使用这些“可移植”哈希的方法 - 这是PasswordHash构造函数的布尔参数。

PasswordHash构造函数的第二个选项是$portable_hashes,它可以强制库生成(较弱的)哈希值,这些哈希值可以在机器之间移动。尝试使用

$hasher = new PasswordHash(8, true);