哪些是PHP中最安全的密码哈希算法?
速度并不重要,因为我正在对哈希进行固定时间的迭代(而不是固定次数的迭代)。我感兴趣的是数学强度。
我的直觉告诉我是whirlpool,它是最大且最慢的。或者是SHA-512。专家推荐哪一个?
是否有其他算法可以提供超过512位的哈希值?
哪些是PHP中最安全的密码哈希算法?
速度并不重要,因为我正在对哈希进行固定时间的迭代(而不是固定次数的迭代)。我感兴趣的是数学强度。
我的直觉告诉我是whirlpool,它是最大且最慢的。或者是SHA-512。专家推荐哪一个?
是否有其他算法可以提供超过512位的哈希值?
password_hash()
来进行密码加密。如果你指定了PASSWORD_DEFAULT
,它会选择推荐的算法,目前是BCrypt。如果算法发生变化,你不必更改代码。如果需要的话,你也可以明确选择该算法使用常量PASSWORD_BCRYPT
,但这与自动更新到更好的算法的意图相抵触。password_verify()
来验证密码。password_needs_rehash()
检查是否需要重新计算密码哈希值,以防默认值发生更改。scrypt
是目前被认为最安全的哈希算法之一,因为它受限于RAM,因此难以并行化。然而,在许多现有系统中,如果有任何支持,也不是本地支持。
bcrypt
是其次。它没有当前已知的加密弱点,被广泛支持,并且具有广泛可调的工作因子。它也是password_hash()
的当前默认算法。
其他所有内容都不及格。
除非您拥有密码学学位,否则不要自己编写哈希或加密方案。
值得注意的是,自PHP7.2 [发布于2017年11月]以来,Argon2哈希已经可以用于password_hash()
,只要PHP使用了相关选项进行构建。特别是Argon2id允许指定时间和内存成本参数,使其可能比bcrypt和scrypt更好。
password_hash()
。这就是你需要知道的全部。不要重复造轮子。 - John Conde