【问题标题】:PHP rewriting password hashing function what algo to use?PHP重写密码哈希函数使用什么算法?
【发布时间】:2011-07-14 12:15:11
【问题描述】:

我正在重写我的密码哈希函数。

它目前使用 sha1。

我正在考虑使用 sha512。

我认为 sha512 是 sha2 是否正确?

这是目前散列密码的标准还是我应该使用其他散列算法?

【问题讨论】:

  • 无论你使用什么哈希算法,你都应该使用加盐。
  • @Spudley:我正在加盐。我只想知道使用什么算法。

标签: php digest password-hash


【解决方案1】:

我建议使用 bcrypt 来散列密码。

这个网站提供了一些关于这个问题的良好背景:http://codahale.com/how-to-safely-store-a-password/

【讨论】:

  • 好的。这看起来很有趣。我可能只是 bcrypt 我已经 sha 散列的密码。也许有点矫枉过正,但它没有伤害,不是吗?您能否提供一些使用 php 加密密码的示例代码?
  • 这是 GitHub 上的一段代码,展示了在类中使用 bcrypt。编辑:忘记链接。 gist.github.com/1053158
  • 这里也有一些不错的信息:stackoverflow.com/questions/4795385/…
【解决方案2】:

SHA-2 使用四种不同的位大小:

具有 224、256、384 或 512 位摘要的散列函数。

【讨论】:

    【解决方案3】:

    足以说明 bcrypt 或 SHA-512 是否足够好。答案是肯定的,任何一种算法都足够安全,以至于通过实施缺陷而不是密码分析发生违规行为。

    如果您坚持要知道哪个“更好”,SHA-512 已经被 NIST 和其他人深入研究过。这很好,但已经认识到缺陷,虽然现在无法利用,但已经导致 SHA-3 竞争新的哈希算法。另外,请记住,哈希算法的研究比密码“新”,密码学家仍在学习它们。

    尽管 bcrypt 作为一个整体并没有像 Blowfish 本身那样受到严格的审查,但我相信基于具有易于理解的结构的密码可以为其提供一些基于哈希的身份验证所缺乏的固有安全性。

    因此,我对 bcrypt 的推荐源于以下假设:1) SHA-2 系列散列函数具有更好的审查能力,以及 2) 密码的密码分析方法比散列函数的方法开发得更好。

    【讨论】:

    • @PeeHaa 如果你满足了,那我很高兴 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 2012-08-19
    • 2018-01-02
    • 1970-01-01
    • 2015-02-15
    • 2014-10-02
    相关资源
    最近更新 更多