哪种算法首选散列密码C#?

时间:2013-01-23 06:38:47

标签: c# hash passwords salt

  

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

我对密码的哈希是新手。我读哈希+盐使密码真的很安全。但仍然混淆了我应该使用哪种哈希算法,因为有很多像。

MD5CryptoServiceProvider SHA1Managed SHA256Managed等。

我如何决定哪一个对我有益或者一切都是平等的。我可以盲目接受任何人吗?

3 个答案:

答案 0 :(得分:4)

MD5

  

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

SHA1

  

2005年,密码分析师发现对SHA-1的攻击暗示了这一点   算法可能不够安全,无法继续使用

SHA2 SHA256是一种类型,从写作的那一刻起就没有已知的漏洞。

答案 1 :(得分:3)

像MD5,SHA-1甚至SHA-256这样的快速哈希算法是哈希密码的好选择,因为它们太快了,而且太容易暴力破解。在2013年,人们可以使用通用硬件计算每秒3 Giga SHA-1 values

相反,您可以使用慢速键派生函数,如BCrypt或PBKDF2。 CSharp对PBKDF2有本机支持,它可以用Rfc2898DeriveBytes类实现,你可以找到here的例子。

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

答案 2 :(得分:2)