可能重复:
What algorithm should I use to hash passwords into my database?
我对密码的哈希是新手。我读哈希+盐使密码真的很安全。但仍然混淆了我应该使用哪种哈希算法,因为有很多像。
MD5CryptoServiceProvider
SHA1Managed
SHA256Managed
等。
我如何决定哪一个对我有益或者一切都是平等的。我可以盲目接受任何人吗?
答案 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)