phpass:为什么HashPassword会失败?

phpass:为什么HashPassword会失败?,php,phpass,Php,Phpass,我在看书。在某些情况下,它会检查散列的结果,如下所示: $hash = $hasher->HashPassword($pass); if (strlen($hash) < 20) fail('Failed to hash new password'); $hash=$hasher->HashPassword($pass); if(strlen($hash)

我在看书。在某些情况下,它会检查散列的结果,如下所示:

$hash = $hasher->HashPassword($pass);
if (strlen($hash) < 20)
    fail('Failed to hash new password');
$hash=$hasher->HashPassword($pass);
if(strlen($hash)<20)
失败(“未能哈希新密码”);
我知道这是phpass散列的最小长度,但我不明白为什么它会失败。有可能吗?我的意思是,如果发生这种情况,我该责怪谁/什么?如何预防?我也在网页上对此发表了评论


作为参考,您可以在这个问题中找到
PasswordHash::HashPassword()
的代码:

我注意到一些底层库,如“crypt”,在出现错误时不会正常失败,而只是返回一个较短的字符串


也许这是这个问题的一个症状,只是一个额外的预防措施

建议:PHP开发人员目前正在开发PHP5.5。这将包括使用安全密码的专用功能。(见此处:)。但是,该库的一个版本已经可以在较旧的PHP版本中使用。您可以从此处下载:。可能值得考虑使用它,因为它很快就会成为PHP标准。您是否包含了phpass类?@rsz:嗯,实际上我还没有开始使用它。我只是想知道当
HashPassword()
失败时我应该告诉用户什么。。。比如“没有奇怪的角色”,以及如何防止这种情况@Spudley:我使用的是PHP5.2:(这让我开始寻找“fail”(失败)并得到我想要的答案。问题可能是salt中的无效字符或其他无效参数。因此,这似乎只是额外的预防措施。