BetterHashThanSHA1出于明显的原因也想对它进行哈希处理,我看到新闻表明SHA1已被破解,在“标准”系统或.net中是否有更好的(未破解的)哈希算法?SHA1不是加密,它是一种加密散列函数。是的,它坏了,这意味着可以比蛮力方法更快地产生碰撞。SHA2家族还没有崩溃。但我建议每个条目使用自定义种子,这样彩虹表就不能用来尝试密码。如果您使用的是SQL成员身份提供程序,则密码格式“Hashed”已经为每个用户使用了不同的种子。有关种子散列的详细信息,请参阅ThomasPtacek关于安全密码方案的文章。正如您在评论中所说,SHA1是一种哈希算法,而不是加密算法。这是一种单向功能,即使它被破坏,也不允许检索密码。如果您想要.NET中已有的更强大的哈希函数,请查看SHA2系列-SHA256、SHA384、SHA512。(SHA224也存在,但未在System.Security.Cryptography命名空间中实现。)针对SHA1的碰撞攻击尚未实际利用,但您的期待是正确的。鉴于这些攻击,NIST目前正在选择对抗SHA3,但这距离完成和商业接受还需要几年时间。另一方面,SHA2是由NIST标准化的现有算法系列,可以抵抗针对MD5和SHA1的成功攻击。您需要做的就是对密码加盐。下面是使用SHA1和加盐的C#中的一些实际示例代码。SHA1被“破解”的问题是所有可能的基本组合都已经预先计算好了,但是加盐会使您的密码成为非基本密码(如果它很弱或很容易猜到但它杀死了彩虹表,它仍然容易受到暴力攻击)哈希算法有最近表现出一些弱点,这就是为什么NIST提供哈希竞赛,就像他们有密码竞赛一样,这将Rijndael添加到新的AES中。我个人喜欢MD6所提供的功能,因为它是由从事密码学工作三十多年的RonRivest带头的。MD6已经撤回了,所以第二轮推荐几个更强的人选,Keccak,BlueMidnightWish和Fugue,个人愚见。从那里开始,一定要使用盐腌等良好做法。是的,你可以使用SHA512,只要记住实际散列的长度即可。您还可以通过对哈希结果进行加盐来增加额外的安全性。SHA512("Thequickbrownfoxjumpsoverthelazydog")=07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6如果你想查看其他Hashing算法,这里有一个简短的列表。5daystoolate但是你可以试试这个高度安全的加密函数:uint64_thighly_secure_encrypt(char*password){sleep(1);返回0;您无法从中获取密码。现在,进入严肃的话题。如果您还不知道问题的答案,则不应设计安全系统。如果您将密码存储在注册表的当前用户部分,那么唯一可以访问它的人(在正常情况下)是用户和管理员。我(有点)信任注册表的当前用户部分,并使用操作系统提供的标准密码哈希机制。JeffAtwood的“RainbowHashCracking”详细描述了哈希和密码存储,ThomasPtacek的“足够使用RainbowTables:你需要知道的安全密码方案”继续告诉你为什么你不应该尝试做通常是你自己。选择一个好的哈希函数还不到1%的成功。如果攻击者每秒可以运行哈希函数数百万次,那么他每秒可以测试数百万个组合。您需要的是一个缓慢的、可调的安全散列。这不是很容易实现的东西,SHA*、MD5等被设计为速度很快,因为它们通常用于速度为王的文件和文件块。我建议多读一些,因为在那里很容易找到答案。以上就是《C#学习教程:BetterHashthanSHA1》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
