CRC32 校验

在线CRC32循环冗余校验工具,支持文本与文件,纯浏览器端运行

文本模式
0x363A302DHEX (十六进制)
910840877DEC (十进制)
0011011000111010001100110000101101BIN (二进制)
文件模式
📁
点击选择文件 或 拖拽文件到此处
计算文件的CRC32校验值
校验对比
CRC32 知识

什么是CRC32?

CRC32(Cyclic Redundancy Check,循环冗余校验)是一种从数据中产生固定长度校验值的哈希算法,输出为32位(4字节)整数。常用于网络传输、文件完整性校验、压缩格式(如ZIP、GZip)等场景。

CRC32 不是加密哈希(如MD5、SHA),它的设计目标是快速检测传输/存储中的偶然错误,而非抵御恶意篡改。

算法原理

CRC32 将输入数据视为一个大的二进制数,用预设的生成多项式(Generator Polynomial)做模2除法,余数即为CRC校验值。

标准CRC32使用的多项式为:

0x04C11DB7 (二进制:1 0000 0100 1100 0001 0001 1101 1011 0111)

实际计算中通常使用反转后的多项式 0xEDB88320 结合查表法以提升效率。

计算步骤

CRC32的计算过程:

// 1. 初始化CRC寄存器为 0xFFFFFFFF crc = 0xFFFFFFFF // 2. 对每个字节进行运算 for each byte in data: crc ^= byte for i = 0 to 7: if crc & 1: crc = (crc >> 1) ^ 0xEDB88320 else: crc = crc >> 1 // 3. 最终结果取反 return crc ^ 0xFFFFFFFF

查表法优化

为提高速度,CRC32预先计算一个256项的查找表。对每个输入字节,通过查表代替逐位运算:

// 预计算查找表 for i = 0 to 255: crc = i for j = 0 to 7: if crc & 1: crc = (crc >> 1) ^ 0xEDB88320 else: crc = crc >> 1 table[i] = crc // 使用查表法计算 for each byte in data: crc = table[(crc ^ byte) & 0xFF] ^ (crc >> 8)

CRC参数模型(CRC-32)

名称CRC-32
多项式0x04C11DB7
初始值0xFFFFFFFF
结果异或值0xFFFFFFFF
输入反转是 (Reflect In)
输出反转是 (Reflect Out)

常见应用场景

ZIP/GZip 压缩文件完整性校验
PNG 图像数据块校验
以太网 帧校验序列 (FCS)
iSCSI 数据完整性保护
BT 种子文件分片校验
ISO 光盘数据校验

CRC32 vs 其他哈希

算法输出长度速度安全性用途
CRC3232 bit极快错误检测
MD5128 bit已破解文件校验
SHA-1160 bit较慢已破解已淘汰
SHA-256256 bit安全数字签名
关于 CRC32

CRC32 是一种快速、高效的错误检测算法,广泛用于数据完整性校验。

本工具使用标准 CRC-32(IEEE 802.3)算法实现,支持文本和文件两种模式,所有计算在浏览器本地完成,数据不上传服务器。