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-32 | CRC-32 |
|---|---|---|
| 速度 | 更快(简单加法) | 较慢(查表或位运算) |
| 短消息检测 | 较弱(<128字节) | 强 |
| 长消息检测 | 良好 | 良好 |
| 实现复杂度 | 极简 | 较复杂 |
| 主要应用 | zlib 压缩格式 | Ethernet、ZIP 等 |
参考文献
- Deutsch, P., Gailly, J.-L. (1996). "ZLIB Compressed Data Format Specification version 3.3". RFC 1950.
- Adler, M. (1995). zlib library source code. https://zlib.net/