密码哈希算法

Hashing Algorithm for passwords

我正在寻找要在我当前的密码加密应用程序中使用的散列算法。我遇到了这个 link

https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet

Argon2[*7] 是密码哈希竞赛的获胜者,应该被视为您新应用程序的首选; PBKDF2 [*4] 当需要在许多平台上获得 FIPS 认证或企业支持时; scrypt [*5] 其中抵抗 any/all 硬件加速攻击是必要的,但支持不是。 在 PBKDF2 或 scrypt 支持不可用的地方使用 bcrypt。

我没有使用过这些早期项目中的任何一个,我知道 SHa-256。但我想知道哪一个是加密密码的最佳算法。 考虑到计算、使用的内存、return 哈希值长度,我们是否需要使用盐值。

他们也建议 Argon2 ,但它相对较新。我们可以使用它吗?值得推荐吗?

关于这些的任何建议。

仅使用哈希函数保存密码验证程序是不够的,仅添加盐对提高安全性几乎没有作用。

改为使用随机盐迭代 HMAC 约 100 毫秒,并使用哈希值保存盐。

最好使用 PBKDF2Rfc2898DeriveBytesArgon2password_hashBcrypt 或类似函数。

重点是让攻击者花费大量时间通过暴力查找密码。

PBKDF2 也称为 Rfc2898 和 Rfc2898DeriveBytes 是当前 NIST 批准的方法,Argon2 是一个更好的解决方案,但没有广泛使用。