adler32校验和的可靠性如何?

问题描述 投票:18回答:5

我想知道adler32校验和是多么可靠,与例如md5校验和?在维基百科上告诉我,adler32“比md5”更“可靠”,所以我想知道它有多少,以及以哪种方式?

更具体地说,我想知道它是否足够可靠作为长期存档大小为20GB +的(tar)文件的一致性检查?

md5 checksum data-consistency adler32
5个回答
16
投票

有关Adler-32校验和的错误检查功能的详细信息,请参阅Revisiting Fletcher and Adler Checksums. Maxino, 2006.示例

本文包含对这两个校验和提供的汉明距离的分析,并提供了高达约2 ^ 11位的数据字的残留错误率的指示。这显然远远低于你对2 ^ 38位的要求......


12
投票

Adler32与MD5的目的完全不同。 Adler32是校验和。 MD5是一个安全的消息摘要。 Adler32用于快速哈希,具有小位空间和简单算法。它的碰撞率很低,但不足以保证安全。 MD5,SHA和其他加密/安全哈希(或消息摘要)具有更大的位空间和更复杂的算法,因此具有更少的冲突。比较SHA2-256,例如;与Adler32的32位相比,256位。

Adler确实有其目的,例如哈希表或快速数据完整性检查。尽管如此,它的设计目的与MD5或其他安全摘要的目的不同。

顺便说一句,如果你需要一个简单但有点可靠的校验和,那么弗莱彻似乎胜过阿德勒。我推测它们都优于CRC,但可能不是简单的基于加法的校验和(尽管它很容易发生冲突)。如果您想要两种性能和安全性,那么请使用BOTH算法。将校验和算法用作快速计算和查找,然后使用较大的摘要进行更彻底的确认(如果找到)。

为了回答你关于确保档案有效性的问题,我想说它可能就足够了。最好的选择?可疑的。错误的可能性?非常低。


4
投票

这是一个古老的算法;正如维基百科页面所说的那样,“交易速度的准确性”。简而言之,不,你不应该依赖它。

关键在于多次损坏,这个校验和可能仍然通过“好”。由于雪崩效应,这在现代算法(甚至旧的MD5)中发生的可能性显着降低。

对于今天的机器来说,速度并不是一个值得关注的因素,因此我建议使用现代算法(以当前为准),即使对于TB范围内的文件也是如此。使用旧的校验和系统可以节省大量时间,恕我直言不足以平衡未检测到的数据损坏风险显着增加 - 老实说,现在20GB的文件并不是那么多你需要使用弱的数据(而且我敢于破坏算法。


2
投票

它不如说MD5或CRC(实际上与CRC大致相同)。优点是速度,缺点是更多显示短数据(几百字节) - 意思是哈希值的分布不能很好地覆盖可用的32位输出。对于大文件,这是一个不错的选择。


2
投票

Adler-32和MD5无法以这种方式进行比较。当你想要确保文件没有被对手篡改时,MD5实际上是一个加密校验和,而Adler-32(以及与Adler-32相当的CRC)用于确保文件未被意外篡改(完整性校验和)。

MD5实际上因其加密目的而被视为已损坏,并且仅在您需要更多位确定性时才用作完整性检查。 Adler-32可能“不太可靠”的唯一方法是它允许在保留相同输出的同时更改可能更多的位,这意味着存在更多的冲突空间。

This link就如何使用Adler-32为某些类型的代码提供性能优势进行了很好的讨论,这些代码需要使用加密和来增加确定性。也就是说,您可以使用较小且廉价的校验和来查看在更改文件时是否值得考虑使用更昂贵的MD5 / SHA / Whirlpool。

© www.soinside.com 2019 - 2024. All rights reserved.