English 简体中文 Tiếng Việt 日本語 한국어 हिन्दी Español Français العربية বাংলা Português Русский اردو Bahasa Indonesia Deutsch Naijá मराठी తెలుగు Türkçe தமிழ்
// checksum utility
CRC32 — 校验工具
CLIENT-SIDE ONLY
NO DATA TRANSMITTED
🔵 所有计算均在浏览器本地完成,数据不会上传至任何服务器。支持 CRC-32/ISO-HDLC、CRC-32C、CRC-32/MPEG-2、CRC-32/BZIP2 四种多项式变体。
计算配置
CRC 变体 ↗
输入编码 ↗
输出格式 ↗
输入数据
拖放文件到此处
就绪 — 输入数据后点击「计算 CRC32」
计算结果
ISO-HDLC
Castagnoli
MPEG-2
BZIP2
校验比对
粘贴预期的 CRC32 值,与当前计算结果进行比对验证
输入字节数
0
累计计算次数
0
当前变体
ISO-HDLC
耗时 (ms)
// CRC32 变体说明
CRC 变体
CRC-32 / ISO-HDLC PKZip · PNG · Ethernet
最常见的 CRC-32 实现,也称 CRC-32b。使用多项式 0x04C11DB7 的比特反射形式 0xEDB88320,输入字节与输出结果均做位反射(LSB first),初始值与最终异或值均为 0xFFFFFFFF。

广泛用于 ZIP、gzip、PNG 图片、以太网帧校验(IEEE 802.3)、PKCS#7 等,是事实上的"默认 CRC-32"。
多项式0x04C11DB7(正常)/ 0xEDB88320(反射)
初始值0xFFFFFFFF
输入反射是(RefIn = true)
输出反射是(RefOut = true)
最终异或0xFFFFFFFF
校验值0xCBF43926(对 "123456789")
CRC-32C / Castagnoli iSCSI · NVMe · SCTP
由 G. Castagnoli 等人于 1993 年提出,采用多项式 0x1EDC6F41(反射形式 0x82F63B78)。在相同 Hamming 距离下比 ISO-HDLC 多项式具有更优秀的突发错误检测能力。

Intel SSE4.2 与 ARM CRC32 指令集均提供硬件加速,现代存储协议(iSCSI、NVMe、Btrfs、SCTP)广泛采用。
多项式0x1EDC6F41(正常)/ 0x82F63B78(反射)
初始值0xFFFFFFFF
输入反射是(RefIn = true)
输出反射是(RefOut = true)
最终异或0xFFFFFFFF
校验值0xE3069283(对 "123456789")
CRC-32 / MPEG-2 MPEG-2 · DVB · ATSC
使用与 ISO-HDLC 相同的多项式 0x04C11DB7,但输入和输出均不做位反射(MSB first,大端序),初始值 0xFFFFFFFF,最终不做异或(XorOut = 0x00000000)。

主要用于 MPEG-2 传输流(TS)的 PSI/SI 表格(PAT、PMT、NIT 等),以及 DVB、ATSC 广播系统的帧完整性校验。
多项式0x04C11DB7
初始值0xFFFFFFFF
输入反射否(RefIn = false)
输出反射否(RefOut = false)
最终异或0x00000000(不异或)
校验值0x0376E6E7(对 "123456789")
CRC-32 / BZIP2 BZip2 · AAL5 · DECT
参数与 MPEG-2 几乎相同(多项式 0x04C11DB7,不反射,初值 0xFFFFFFFF),唯一区别是最终结果与 0xFFFFFFFF 异或(即对所有位取反),也称 CRC-32/AAL5 或 CRC-32/DECT-B。

用于 BZip2 压缩文件格式及 ATM AAL5 协议的帧尾部校验字段。
多项式0x04C11DB7
初始值0xFFFFFFFF
输入反射否(RefIn = false)
输出反射否(RefOut = false)
最终异或0xFFFFFFFF
校验值0xFC891918(对 "123456789")
// 输入编码说明
输入编码
UTF-8 文本 默认 · 通用
将输入框中的字符串按 UTF-8 编码转换为字节序列,再计算 CRC32。这是最常用的模式,适合对普通文本、程序源码、JSON 等内容校验。

注意:同一段文字若采用不同字符编码(如 GBK、UTF-16),所得字节流不同,CRC32 结果也会不同。本工具固定使用 UTF-8。
适用场景普通文字、源代码、JSON、XML
示例"Hello" → 48 65 6C 6C 6F(5 bytes)
中文字符每个汉字占 3 bytes(UTF-8)
Hex 十六进制 二进制数据 · 协议报文
将输入视为十六进制字节字面量直接解析为原始字节,忽略空格/换行。每两个十六进制字符对应一个字节(00–FF)。

适用于需要对特定二进制数据(如网络帧、固件镜像片段、内存 dump)精确计算 CRC 的场景,可直接粘贴 Wireshark/hex dump 输出。
格式要求仅允许 0-9a-f / A-F
字符数必须为偶数(每字节 2 个字符)
示例48656C6C6F = "Hello"(5 bytes)
空格处理自动忽略,48 65 6C 等同 48656C
Base64 编码二进制 · 证书 · 图片
将输入视为 Base64 编码字符串,先解码为原始二进制字节再计算 CRC32。常见于对 PEM 证书、JWT payload、Data URI(图片/文件)等 Base64 编码内容直接校验的场景。

支持标准 Base64 字符集(A-Z a-z 0-9 + /),填充字符 = 可选。不支持 URL-safe Base64(- _)。
字符集A-Z a-z 0-9 + / =
示例SGVsbG8= → "Hello"(5 bytes)
URL-safe不支持,请先替换 -→+ _→/
⚠ 1 个字符无效 — 6 bits 不足以凑成 1 字节(需要 8 bits)
2 个字符解码出 1 字节(最小合法输入)
3 个字符解码出 2 字节
4 个字符解码出 3 字节(每 4 字符为一组循环)
// 输出格式说明
输出格式
十六进制 Hex 最常用 · 默认
0x 前缀的 8 位十六进制数表示(大写),每个字符代表 4 bits,共 32 bits。这是绝大多数工具、文档、源代码中记录 CRC32 值的标准格式。

与十进制相比,十六进制能直观体现字节边界,便于对照内存 dump、协议字段。
示例0xCBF43926
位数8 个十六进制字符 = 32 bits
进制16 进制(0-9, A-F)
适用代码、文档、Wireshark、hex editor
十进制 Decimal 无符号 32 位整数
无符号 32 位十进制整数表示,范围 0 – 4,294,967,295(2³²−1)。部分编程语言(Python、Java)在比较 CRC 时使用十进制整数,数据库字段也常存储十进制。

注意:CRC32 结果应视为无符号整数。在 Java/C# 的 int(有符号)中,超过 0x7FFFFFFF 的值会显示为负数,需强制转换为 uint。
示例3421780262
范围0 – 4,294,967,295
注意Java int 需 & 0xFFFFFFFFL 转换
适用数据库、Python struct、比较运算
二进制 Binary 位级分析
0b 前缀的 32 位二进制字符串表示,每个字符为 0 或 1,左侧高位(MSB)对齐,不足 32 位则左侧补零。

主要用于理解 CRC 算法内部结构、分析多项式除法步骤、教学演示,以及嵌入式系统中需要逐位处理校验码的场景。
示例0b11001011…00100110
位数固定 32 位,左补零
最高位位 31(MSB)在最左侧
适用算法分析、教学、嵌入式调试
八进制 Octal Unix · 文件系统
0o 前缀的 11 位八进制数表示(32 bits 最多需要 11 位八进制字符,因为 3×11 = 33 > 32)。每个八进制字符代表 3 bits。

在现代 CRC 校验中八进制较少使用,但在部分 Unix 工具(cksum 早期实现)、嵌入式固件工具链及某些旧版通信协议规范中仍有记录。
示例0o31572031046
位数最多 11 位八进制字符
每字符表示 3 bits(0-7)
适用Unix 工具、旧版协议规范