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

可能重复:
我应该使用什么算法将密码哈希到我的数据库中?

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

MD5CryptoServiceProvider SHA1Managed SHA256Managed

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

MD5 :

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

SHA1 :

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

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

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

相反,您可以使用慢速键派生函数,如BCrypt或PBKDF2。 CSharp对PBKDF2有本机支持,可以使用Rfc2898DeriveBytes类实现, 这里有一个例子。

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

MD5被认为是可以破解的。 SHA1很好但可能可以破解的。 SHA256很好。

https://security.stackexchange.com/questions/5586/why-do-people-think-that-this-is-bad-way-to-hash-passwords

SHA1 vs md5 vs SHA256:用于PHP登录?

SHA-1对密码存储是否安全?