SHA512Managed被认为是.NET 3.5中安全性方面最好的单向散列吗?
三个SHA512管理相关问题:SHA512Managed被认为是.NET 3.5中安全性方面最好的单向散列吗?,.net,security,hash,.net,Security,Hash,三个SHA512管理相关问题: SHA512Managed被认为是.NET 3.5中安全性方面最好的单向散列吗 SHA512管理时应使用多大的盐量?该应用程序用于至少包含8个字符的强密码 与小字符串的256相比,512是否过多 如果你想防止暴力攻击,可以在bcrypt或scrypt获得战利品。它们被设计成在算法上很慢。因此,即使攻击者确实掌握了密码数据库,计算所有内容也将花费很长时间 Sha512Managed不依赖于系统调用,并且具有内置哈希中最大的哈希大小。如果您没有针对其他任何内容进行
如果你想防止暴力攻击,可以在bcrypt或scrypt获得战利品。它们被设计成在算法上很慢。因此,即使攻击者确实掌握了密码数据库,计算所有内容也将花费很长时间
Ben的答案不正确,您不应该使用SHA*函数散列密码。您应该使用专门为哈希密码而设计的哈希函数,例如PBKDF2、BCrypt或SCrypt。闵的回答和评论是正确的 由于您想使用标准的.NET库,我建议使用Rfc2898DeriveBytes,它是PBKDF2的一个实现
您如何定义“最佳”?没有散列冲突?最好的安全性,我会更新这个问题。这些看起来很有趣,但我正在寻找一个散列函数,它是.NET Framework(3.5版)的一部分。我认为您需要重新思考较长的散列如何使它更安全。使用较长哈希的主要原因是为了降低冲突的概率。那么,更长的散列究竟是如何提高安全性的呢?你基本上是通过减少冲突的可能性来实现的,在我看来,冲突并不是一个很好的衡量标准。对于存储密码来说,所有这些都是多余的。只需修改密码。请记住,bcrypt是为密码存储场景而设计的。第2点(salt的用途):不。salt是为了防止两件事:1。非盐字典攻击(即MD5数据库)2。如果数据库中加密了两个相同的明文值(如果未加密),则在数据库中找到任何测试值的有效冲突的概率将乘以N条记录(如果未加密)。基本上,任何大型数据库unsalted都意味着,虽然您可能不会与特定行发生冲突,但与任何行发生冲突的可能性更高。添加salt会使您返回到需要个性化的每行攻击,前提是salt对于每个记录都是唯一的。我正在寻找单向散列,Rfc2898DeriveBytes使用键。您对Rfc2898DeriveBytes的解释不正确,请再次查看。还可以阅读这篇关于为什么不应该使用SHA的文章*