各种哈希算法的特点?

Li *_*oyi 2 security algorithm hash performance

MD5,MD6 ?,所有SHA-somethings,CRC-somethings.我以前用过它们,看过它们用在各个地方,但我不知道为什么你会用到另一个.

在很高的层面上,所有这些3/4字母缩略词之间的差异在性能,碰撞概率和一般难以破解方面有何不同?这些中的任何一个取决于我正在散列的数据类型或数量吗?

当我选择一个而不是另一个时,我做了什么权衡?我已经读过CRC不适合用于安全性,但是对于一般的哈希表冲突避免呢?

Jer*_*fin 5

CRC-主要用于(应该是唯一的)用于防止数据意外更改的任何内容.它们在检测噪声方面做得相当不错,但不是用于加密目的 - 找到第二个原像(产生相同散列的第二个输入)(通过加密标准)是微不足道的.[编辑:正如@Jon所说,与此处提到的其他哈希不同,CRC不是,也绝不是用于加密使用.]

MD-5.最初用于加密使用,但相当陈旧,现在认为相当弱.虽然不知道第二个原像攻击,但已知碰撞攻击(即,产生两个选定输入的方法产生相同的结果,但不产生第二个输入以产生与指定结果相同的结果).关于唯一一次使用它是一个更复杂的CRC版本.

SHA-X

曾几何时,只有"SHA".在其历史的早期,发现了一个缺陷,并且对产生SHA-1进行了轻微修改.SHA的使用时间很短,很少有实际意义.

SHA-1是通常安全比MD-5,仍处于相同的一般范围-碰撞攻击是已知的,虽然这是一个很多1比MD-5更昂贵.没有第二次原始图像攻击是已知的,但是碰撞攻击足以说"远离".

SHA-256,SHA-384,SHA-512:这些是基于SHA-1的,但在内部有点复杂.至少据我所知,目前任何一种都不知道第二次原像攻击碰撞攻击.

SHA-3:美国国家标准与技术研究院(NIST)目前正在举办一场竞赛,以标准化当前SHA-2系列哈希算法的替代品,该算法将被称为SHA-3.在我写这篇文章时(2011年9月),比赛目前已进入第三轮,有五名候选人(Blake,Grøstl,JH,Kaccek和Skein 2)参赛.第3轮计划于2012年1月结束,届时公众对算法的评论将不再(至少正式)被接受.2012年3月,将举行(第三届)SHA-3会议(华盛顿特区).在2012年晚些时候的某个未指定日期,将公布最终选择.


1对于任何关心攻击SHA-1比MD-5更昂贵的人,我会尝试给出一些具体数字.对于MD-5,我5岁左右的机器可以在大约40-45分钟内发生碰撞.对于SHA-1,我只有一个估计值,但我的估计是,以每周一次的速率产生碰撞的集群将花费超过一百万美元(可能接近1000万美元).即使使用现有的机器,操作机器足够长的时间以发现碰撞的成本也很大.

2由于人们至少不可避免地会想到,我会指出Bruce Schneier所做的工作是Skein.