3

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

我是这个密码散列的新手。我读了哈希+盐使密码非常安全。但是仍然很困惑我应该使用哪种散列算法,因为有很多类似的。

MD5CryptoServiceProvider SHA1Managed SHA256Managed等等

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

4

3 回答 3

4

MD5

1996 年,发现 MD5 的设计存在缺陷,虽然这不是一个明显的致命弱点,但密码学家开始推荐使用其他算法,例如 SHA-1,后来发现该算法也很容易受到攻击。

SHA1

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

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

于 2013-01-23T06:49:09.047 回答
3

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

相反,您可以使用慢速密钥派生函数,如 BCrypt 或 PBKDF2。CSharp 对 PBKDF2 具有原生支持,它可以使用 Rfc2898DeriveBytes 类来实现,您可以在此处找到示例。

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

于 2013-01-23T08:36:06.953 回答
2

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 对密码存储是否安全?

于 2013-01-23T06:45:26.870 回答