【问题标题】:With PHP, why do we use crypt() for password hashing instead of hash()? [duplicate]在 PHP 中,为什么我们使用 crypt() 而不是 hash() 来进行密码散列? [复制]
【发布时间】:2012-08-18 04:52:26
【问题描述】:

可能重复:
hash() vs. crypt() function comparison

最近我研究了如何在 PHP 中正确地进行密码散列。更好的选择之一是使用crypt()。但是我们为什么不使用hash()呢?

我问这个的主要原因是因为我做了一个密码散列函数来包装crypt(),我想知道给我的函数起什么名字。现在它被命名为getHash()。但我觉得使用这个名字很有趣,因为我包装了crypt()。如果我使用getCrypt(),那听起来也不是很好,因为它是一个哈希函数。我应该如何命名包装 crypt() 的散列函数?

【问题讨论】:

    标签: php hash naming crypt


    【解决方案1】:

    hash 使用的散列是为了验证数据(如文件),通常作为校验和之类的东西。它快速,这就是我们不将它用于安全数据的原因。

    Crypt(正确使用时)使用慢散列算法。慢速散列算法之所以重要,是因为它使某人难以暴力破解散列。如果慢速哈希算法比快速哈希算法花费的时间甚至多 0.1 毫秒,那么尝试 10000 个密码将需要一秒钟,当然,暴力破解需要数百万次尝试。

    【讨论】:

      【解决方案2】:

      我认为我们最终在这里得到的是,一些 crypts 被设计为较慢,而 hash() 相比之下相对较快。算法越慢,黑客就越能暴力破解您的密码。可悲的是,越慢越好……在一定程度上:)

      【讨论】:

      • 哈希也是更可取的,因为只要有密钥,加密很容易可逆。您唯一需要对哈希进行加密的情况是您以后必须检索密码(以及为什么需要这样做?)。
      • @Gary 加密从何而来?没有人讨论过加密。
      猜你喜欢
      • 2018-12-20
      • 2020-12-16
      • 2021-08-02
      • 2010-10-28
      • 2020-07-11
      • 2015-08-31
      • 2011-03-09
      • 1970-01-01
      相关资源
      最近更新 更多