【发布时间】:2012-09-20 14:37:47
【问题描述】:
我正在阅读phpass manual。在某些时候,它会像这样检查散列的结果:
$hash = $hasher->HashPassword($pass);
if (strlen($hash) < 20)
fail('Failed to hash new password');
我知道这是 phpass 哈希的最小长度,但我不明白它为什么会失败。甚至可能吗?我的意思是,如果发生这种情况,我应该责怪谁/什么?如何防止这种情况?我还在网页上发表了对此的评论。
作为参考,你可以在这个问题中找到PasswordHash::HashPassword()的代码:How can * be a safe hashed password?
【问题讨论】:
-
一个建议:PHP 开发人员目前正在开发 PHP 5.5。这将包括使用安全密码的专用功能。 (见这里:h-online.com/security/news/item/…)。然而,这个库的一个版本已经可以在旧的 PHP 版本中使用。你可以从这里下载它:github.com/ircmaxell/password_compat。可能值得考虑使用它,因为它很快就会成为 PHP 标准。
-
你是否包含了 phpass 类?
-
@rsz:嗯,其实我还没有开始使用它。我只是想知道当
HashPassword()失败时我应该告诉用户什么......比如“没有奇怪的字符”,以及如何防止这种情况。 @Spudley:我在 php 5.2 :(