对于PHP,为什么我们使用crypt()进行密码哈希而不是hash()


With PHP, why do we use crypt() for password hashing instead of hash()?

可能重复:
hash()与crypt()函数比较

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

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

hash使用的哈希用于验证数据(如文件),通常作为校验和类型的东西。它是快速,这就是为什么我们不将其用于安全数据。

Crypt(如果使用正确)使用慢速哈希算法。慢哈希算法之所以重要,是因为它使人们很难强行使用哈希。如果慢哈希算法比快哈希算法长0.1毫秒,那么尝试10000个密码将需要一秒钟的时间,当然,暴力强制需要数百万次尝试。

我认为我们最终得到的是,一些密码设计得较慢,而hash()相比之下相对较快。算法越慢,黑客就越能用暴力破解你的密码。可悲的是,越慢越好。。。到一点:)