【问题标题】:phpass: why would HashPassword fail?phpass:为什么 HashPassword 会失败?
【发布时间】: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 :(

标签: php phpass


【解决方案1】:

我注意到一些底层库,例如 'crypt' 在出现问题时不会优雅地失败,而只是返回一个较短的字符串。

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

【讨论】:

  • 这让我在crypt() docs 中寻找“失败”并得到我想要的答案。问题可能是盐中的无效字符或其他无效参数。所以这似乎只是一个额外的预防措施。
猜你喜欢
  • 2016-04-11
  • 2021-10-10
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多