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

时间:2009-11-09 17:54:21

标签: .net security hash

三个SHA512管理相关问题:

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

3 个答案:

答案 0 :(得分:16)

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

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

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

答案 1 :(得分: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

答案 2 :(得分:3)

  1. Sha512Managed不依赖于系统调用,并且具有内置哈希的最大哈希值。如果您没有针对其他任何事情进行优化,那么它将被认为是最安全的。

  2. 出于密码破解的目的,盐本质上会增加密码的大小。虽然“越大越好”,任何超出密码本身数量的东西都会被浪费掉。因此,对于最小8位ASCII字符密码,您可能会使用64位盐。

  3. 是和否。这对现代技术来说太过分了;字符串的大小是无关紧要的。如果您需要密码在接下来的100年内保持安全,那么请选择512。

  4. 参考: http://www.codeproject.com/KB/security/Cryptography_NET.aspx