哪个是PHP中最安全的密码哈希算法?

时间:2015-06-23 17:52:57

标签: php algorithm security encryption hash

PHP中最安全的密码哈希算法是什么?

速度无关紧要,因为我在一段固定时间(而不是固定数量的迭代)上迭代哈希值。我感兴趣的是数学实力。

我的直觉告诉我它是漩涡,是最大和最慢的一群。那个或 SHA-512 。哪位是专家推荐的?

是否有其他算法提供超过 512位哈希值?

2 个答案:

答案 0 :(得分:5)

使用功能password_hash()。如果你允许它(通过指定PASSWORD_DEFAULT),它将选择推荐的算法,当前是BCrypt。如果算法更改,则不必更改代码。如果您愿意,也可以使用常量PASSWORD_BCRYPT明确选择此算法,但这反映了在未来版本中可用时自动更新为更好算法的意图。

您可以使用password_verify()来验证密码。

PHP会将使用过的算法添加到哈希值以及盐中,因此它将知道验证时需要知道的所有内容。这样,当新算法在较新版本的PHP中可用时,它们将自动使用,并且这些密码将具有更强的哈希值。

如果默认情况发生变化,您可以使用password_needs_rehash()检查是否需要重新设置密码。

如果密码有效,您可以将其重新存储并存储。这样,当用户登录时,您将自动使用较弱的哈希更新旧密码。

答案 1 :(得分:3)

scrypt是最安全的散列算法,因为它受RAM限制,因此难以并行化。但是,许多(如果有的话)当前系统本身并不支持它。

接下来是

bcrypt。它目前没有已知的加密弱点,得到广泛支持,并且具有可广泛调整的工作因子。它也是password_hash()的当前默认算法。

其他一切都低于标准。

除非您拥有加密学位,否则请不要使用自己的哈希或加密方案。