【问题标题】:Hashing Algorithm for passwords [closed]密码的散列算法[关闭]
【发布时间】:2017-11-16 11:57:52
【问题描述】:

我正在寻找在我当前的应用程序中用于密码加密的哈希算法。我偶然发现了这个链接

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

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

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

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

关于这些的任何建议。

【问题讨论】:

  • SHA-256 还不够好吗?
  • 没有 SHA-256 不够好,它速度很快,这意味着暴力攻击是可行的。需要的是一种密码散列方法,该方法会消耗大量 CPU 时间和资源,通常在 100 毫秒左右,对于典型密码,SHA-256 的运行时间约为 1us。

标签: .net security encryption password-encryption


【解决方案1】:

当保存密码验证器时,仅使用哈希函数是不够的,仅添加盐对提高安全性无济于事。

而是使用随机盐在 HMAC 上迭代大约 100 毫秒,然后将盐与哈希一起保存。

最好使用PBKDF2Rfc2898DeriveBytesArgon2password_hashBcrypt 等函数或类似函数。

关键是让攻击者花费大量时间通过蛮力寻找密码。

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

【讨论】:

  • 谢谢 zaph。我在 git 中看到了 argon2 代码。所以我可以使用它吗,或者如果您知道 c#.net 中 PBKDF2 的任何其他实现,请告诉我
  • .NET 调用 PBKDF2 Rfc2898 或 Rfc2898DeriveBytes,人们喜欢用命名来刁难。
  • 您还可以通过检查 NuGet 的任何建议算法来省去一些麻烦。您可以从那里安装 Bcrypt、Scrypt 和 PBKDF2 的专用软件包。
猜你喜欢
  • 1970-01-01
  • 2011-10-05
  • 2013-07-04
  • 2017-06-26
  • 2010-12-22
  • 2019-03-19
  • 1970-01-01
  • 2013-02-22
  • 2016-11-03
相关资源
最近更新 更多