CoderTools

Adler-32 校验和计算器

计算文本和文件的 Adler-32 校验和,广泛用于 zlib/gzip 压缩的快速校验算法

输入纯文本(UTF-8 编码)

关于 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

特性

常见用途

示例

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

参考资料