对密码C#进行哈希运算时,首选哪种算法?

对密码C#进行哈希运算时,首选哪种算法?,c#,hash,passwords,salt,C#,Hash,Passwords,Salt,可能重复: 我是新来的这个密码哈希。我读过hashing+salt使密码真正安全。但是我仍然不知道应该使用哪种哈希算法,因为有很多类似的算法 MD5CryptoServiceProvider SHA1Managed SHA256管理等 我怎样才能决定哪一个对我好,还是所有人都是平等的。我可以盲目地接任何人吗?MD5被认为是易碎品。SHA1很好,但可能会爆裂。SHA256很好 : 1996年,MD5的设计发现了一个缺陷 这显然不是致命的弱点,密码学家开始推荐 使用其他算法,如SHA-1-1,

可能重复:

我是新来的这个密码哈希。我读过hashing+salt使密码真正安全。但是我仍然不知道应该使用哪种哈希算法,因为有很多类似的算法

MD5CryptoServiceProvider
SHA1Managed
SHA256管理


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

MD5被认为是易碎品。SHA1很好,但可能会爆裂。SHA256很好

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

:

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


SHA256是其中的一种类型,但在撰写本文时还没有已知的漏洞。

像MD5、SHA-1甚至SHA-256这样的快速散列算法都不是散列密码的好选择,因为它们速度太快,而且很容易被强制使用。2013年,人们可以用普通硬件计算每秒的速度

相反,您可以使用慢键派生函数,如BCrypt或PBKDF2。CSharp对PBKDF2有本机支持,它可以通过Rfc2898DeriveBytes类实现,您可以找到一个示例


这也很容易使用。通常人们不确定使用这样的库是否安全,但我不认为有人反对使用它。只要库返回正确的值并正确生成salt,就可以了,因为安全性来自算法,而不是实现。

谢谢您的回答。谢谢你的回答。我会试试这个。@DJ添加了到PBKDF2和BCrypt的实现示例的链接。提到的副本并不能真正回答这个问题。答案既没有提出合适的算法,也没有说明如何与CSharp一起使用。