【问题标题】:which algorithm preferred for hashing passwords C#? [duplicate]哪种算法更适合散列密码 C#? [复制]
【发布时间】:2013-01-06 14:02:51
【问题描述】:

可能重复:
What algorithm should I use to hash passwords into my database?

我对密码哈希不熟悉。我读了哈希+盐使密码非常安全。但是我仍然很困惑我应该使用哪种哈希算法,因为有很多类似的。

MD5CryptoServiceProvider SHA1Managed SHA256Managed等。

我怎样才能决定哪一个对我有好处或所有人都是平等的。我可以盲目接人吗?

【问题讨论】:

  • 提到的副本并没有真正回答这个问题。答案既没有提出合适的算法,也没有说明如何将它们与 CSharp 一起使用。

标签: c# hash passwords salt


【解决方案1】:

MD5:

在 1996 年,发现 MD5 的设计存在缺陷,而在 不是一个明显致命的弱点,密码学家开始推荐 使用其他算法,例如 SHA-1,后来发现 也很脆弱。

SHA1:

2005 年,密码分析员发现对 SHA-1 的攻击表明 算法可能不够安全,无法持续使用

SHA2 是 SHA256 的一种,在撰写本文时没有已知漏洞。

【讨论】:

  • 感谢您的回答。我将使用 SHA2。
【解决方案2】:

像 MD5、SHA-1 甚至 SHA-256 这样的快速哈希算法不是对密码进行哈希处理的好选择,因为它们速度太快而且很容易被暴力破解。在 2013 年使用普通硬件可以计算出大约每秒3 Giga SHA-1 values

相反,您可以使用慢速密钥派生函数,例如 BCrypt 或 PBKDF2。 CSharp 原生支持 PBKDF2,可以通过 Rfc2898DeriveBytes 类来实现,例子你可以找到here

这个BCrypt library 也很容易使用。通常人们不确定使用这样的库是否安全,但我认为没有反对使用它的论据。只要库返回正确的值并正确生成盐,应该没问题,因为安全性来自算法而不是实现。

【讨论】:

  • 感谢您的回答。我会试试这个。
  • @DJ 添加了 PBKDF2 和 BCrypt 实现示例的链接。
【解决方案3】:
猜你喜欢
  • 2012-06-12
  • 2017-02-19
  • 1970-01-01
  • 2020-01-10
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
相关资源
最近更新 更多