Adler-32

Adler-32
设计者
Mark Adler
首次发布
1995年
类别
校验和算法
输出长度
32 bit
速度
极快
标准
RFC 1950 (zlib)
安全用途
不适用

Adler-32 是由 Mark Adler(zlib 和 gzip 的共同作者)于 1995 年提出的校验和算法,用于 zlib 压缩库的数据完整性校验。Adler-32 比 CRC-32 计算速度更快,但对短消息的错误检测能力稍弱。

算法

Adler-32 由两个 16 位校验和 A 和 B 组成:

初始化: A = 1, B = 0 对于每个字节 D[i]: A = (A + D[i]) mod 65521 B = (B + A) mod 65521 最终校验和: Adler-32 = (B << 16) | A 其中 65521 是小于 2^16 的最大素数
与 CRC-32 对比
特性Adler-32CRC-32
速度更快(简单加法)较慢(查表或位运算)
短消息检测较弱(<128字节)
长消息检测良好良好
实现复杂度极简较复杂
主要应用zlib 压缩格式Ethernet、ZIP 等
参考文献
  1. Deutsch, P., Gailly, J.-L. (1996). "ZLIB Compressed Data Format Specification version 3.3". RFC 1950.
  2. Adler, M. (1995). zlib library source code. https://zlib.net/