SHA512Managed被认为是.NET 3.5中安全性最好的单向哈希吗?

Jos*_*osh 4 .net security hash

三个SHA512管理相关问题:

  1. SHA512Managed被认为是.NET 3.5中安全性最好的单向哈希吗?
  2. SHA512Managed应该使用什么Salt大小?该应用程序适用于至少包含8个字符的强密码.
  3. 对于小字符串,512是否过度,而256则是过度杀手?

Den*_*kem 16

Ben的答案是不正确的,你应该使用SHA*函数来散列密码.您应该使用专门用于散列密码的散列函数,例如PBKDF2,BCrypt或SCrypt.敏的答案和评论是正确的.

由于您想使用标准.NET库,我建议使用Rfc2898DeriveBytes,这是PBKDF2的一个实现.

http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx

  • 您对Rfc2898DeriveBytes的解释不正确,请再看一遍.另请阅读本文为什么您不应该使用SHA*http://news.ycombinator.com/item?id=995840 (2认同)

Min*_*Min 6

如果你正在寻找防止蛮力攻击,可以在bcrypt或scrypt获取战利品.它们被设计成在算法上很慢.因此,即使攻击者确实获得了密码数据库,计算所有内容也需要永远.

http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx

http://www.tarsnap.com/scrypt.html