Hash 截至2011年,哪种哈希算法最适合用于消息摘要?

Hash 截至2011年,哪种哈希算法最适合用于消息摘要?,hash,md5,digest,hash-collision,Hash,Md5,Digest,Hash Collision,当我用谷歌搜索这个问题时,我对答案有点矛盾,因为这些算法在不断改进,新的漏洞被发现,新的问题不断出现。。。很多关于使用什么样的algo算法的建议都很陈旧,或者保留旧时代的想法,那时它们是最好的方法 我想说得很清楚:我不是在说密码。我说的是消息摘要,不是加密哈希 我可以继续使用md5作为我的消息摘要的第一个线索(它的名字是正确的),但后来我想起,这里的碰撞比现在的算法要多。但是,是什么使这些较新的算法更适合于文件或短字符串的消息摘要呢 所以这就是我的问题,应该使用什么样的现代消息摘要算法?从这个角

当我用谷歌搜索这个问题时,我对答案有点矛盾,因为这些算法在不断改进,新的漏洞被发现,新的问题不断出现。。。很多关于使用什么样的algo算法的建议都很陈旧,或者保留旧时代的想法,那时它们是最好的方法

我想说得很清楚:我不是在说密码。我说的是消息摘要,不是加密哈希

我可以继续使用md5作为我的消息摘要的第一个线索(它的名字是正确的),但后来我想起,这里的碰撞比现在的算法要多。但是,是什么使这些较新的算法更适合于文件或短字符串的消息摘要呢


所以这就是我的问题,应该使用什么样的现代消息摘要算法?

从这个角度来看,根据您使用的数据量,SHA1应该可以很好地工作-如果您使用的数据量较大,可以使用SHA-2算法,例如SHA-256可能更合适,因为SHA1中的冲突恐惧由于其算法中的缺陷而增加,但在处理少量数据时,这并不是非常严重

MD5已经被证明太容易受到冲突的攻击,因为有人攻击使用MD5创建伪造的SSL证书的SSL证书,所以我不想去那里。同样取决于您的应用程序,MD5不符合FIPS 140,如果这对您很重要的话

SHA1比MD5更理想,因为它更安全,因为使用MD5有风险,并且SHA1在大多数常见情况下比SHA-2具有更好的性能。SHA-2算法一点也不慢,但它有优势。然而,SHA1的风险稍高一些,因为您可能已经将自己锁定在使用它的过程中——如果开始发现碰撞,您可能很难改变,因此最好先投资SHA-2算法。使用SHA-256而不是SHA-1的代价很小,这取决于您将如何使用SHA算法。SHA-2算法产生的输出比SHA1大得多,但有利于减少碰撞的机会

那么哪一个是正确的呢?这取决于你在寻找什么以及你的用例是什么。希望现在你能做出决定。

如果有疑问,请使用。其他SHA-2功能也很好;但是,在小型(仅32位)平台上,SHA-384和SHA-512可能会出现不可忽略的性能下降。这对于某些特定应用可能很重要

<>对于非安全相关的用法(例如,在哈希表中索引的第一次传递,或者检测意外的、非恶意的数据更改——可以使用A的一种作业),考虑MD5的前身。MD4甚至比MD5更脆弱,但实现起来更简单(代码更短),速度更快(事实上,在一些ARM平台上,它比CRC32更快)