Adler-32 校验和计算器
计算文本和文件的 Adler-32 校验和,广泛用于 zlib/gzip 压缩的快速校验算法
输入纯文本(UTF-8 编码)
结果 Adler-32
关于 Adler-32
Adler-32 是由 Mark Adler 于 1995 年发明的校验和算法。它被用于 zlib 压缩库,也是广泛使用的 gzip 文件格式的一部分。Adler-32 的设计目标是比 CRC-32 更快,同时保持合理的错误检测能力。
该算法产生 32 位(4 字节)的校验和,对于短输入特别高效。它以其创建者的名字命名,Mark Adler 也是 gzip 和 zlib 压缩程序的联合作者。
算法原理
Adler-32 通过维护两个对 65521(小于 2^16 的最大素数)取模的累加和来工作。校验和计算如下:
A = 1 + D1 + D2 + ... + Dn (mod 65521) B = (1 + D1) + (1 + D1 + D2) + ... + (1 + D1 + ... + Dn) (mod 65521) Adler-32 = (B << 16) | A
特性
- 输出:32 位(4 字节,8 个十六进制字符)
- 速度:比 CRC-32 更快,尤其是软件实现
- 取模:使用素数 65521 以获得更好的分布
- 初始值:A=1, B=0(空字符串产生校验和 1)
常见用途
- zlib 库 - 数据压缩校验
- gzip 文件格式 - 完整性验证
- PNG 图像格式 - 块完整性
- 需要速度优先于碰撞抵抗的快速数据验证
示例
Input: "Hello, World!"
Adler-32: 1f9e046a (Hex) / 530858090 (Decimal)
Input: "" (empty string)
Adler-32: 00000001 (Hex) / 1 (Decimal)
Adler-32 与 CRC-32 对比
| 特性 | Adler-32 | CRC-32 |
|---|---|---|
| 速度 | 更快 | 较慢 |
| 错误检测 | 良好 | 更好 |
| 常见用途 | zlib, PNG, gzip | Ethernet, ZIP, PNG |