哈希与安全

Adler-32 校验和生成器

立即将任意文本转换为其 8 位字符的 Adler-32 校验和。

给这个工具评分

如何使用 Adler-32 校验和生成器

  1. 在输入框中键入或粘贴您的文本。
  2. Adler-32 校验和会随着输入实时显示。
  3. 点击“复制”即可获取结果。

关于 Adler-32 校验和生成器

Adler-32由Mark Adler——zlib和gzip的共同作者——设计,目的是创造一种比CRC-32计算成本更低,同时仍能捕捉实际中常见损坏类型的校验和。它是zlib数据格式所携带的完整性校验机制,因此只要您曾经解压过一个zlib数据流,Adler-32就在默默为您进行验证。结果是32位,打印为8个十六进制字符。

这种取舍是刻意为之的:Adler-32比CRC-32更快,但也更弱。它的工作原理是在遍历数据的过程中维护两个累加和并将其组合,而不是进行多项式除法,这正是它如此廉价的原因。众所周知的薄弱环节在于短消息——当输入只有几个字节时,累加和几乎没有足够的空间充分展开,因此短字符串的校验和会聚集在一起,能用到的不同数值也出奇地少。对于几千字节的压缩数据而言,这几乎不成问题。但对于哈希少量短字符串而言,这个问题就相当严重,此时CRC-32是更好的选择。

与本页面上的每一种校验和一样,Adler-32是为应对意外而设计的,而非为对抗攻击者。它之所以速度快,正是因为它完全没有抵御主动欺骗的能力,构造两个具有相同Adler-32值的不同输入十分容易。它只能回答“这份数据是否完整无损地到达了?”这一个问题,仅此而已。如果您要问的问题是“是否有人篡改过这份数据?”,就需要一种密码学哈希算法,例如SHA-256

常见问题

Adler-32 还是 CRC-32——我该选哪一个?

Adler-32速度更快;CRC-32在发现错误方面更可靠,尤其是在处理短数据时。如果速度不是瓶颈,CRC-32通常是更安全的默认选择。Adler-32在较长的数据流上表现出色,这也正是zlib使用它的场景。

为什么 Adler-32 在处理短字符串时表现不佳?

它是通过对数据维护两个累加和来得出结果的。当输入只有几个字节时,这些累加和保持很小,因此短输入只能产生一个狭窄范围内的校验和,碰撞也就变得常见。

Adler-32 安全吗?

不安全。它绝不能用于密码、签名,或任何攻击者可能想要伪造的场景——构造两个具有相同Adler-32值的输入十分容易。它只是一种传输错误校验机制,仅此而已。

为什么结果总是 8 个字符?

Adler-32始终生成32位输出,每个十六进制字符代表4位,因此无论输入大小如何,输出都恰好是8个字符。

我的文本会被发送到其他地方吗?

您的文本会被发送到我们的服务器进行校验和计算,因为浏览器无法计算Adler-32。处理完成后会立即丢弃——绝不记录,也绝不存储。