CRC 校验

支持 CRC-8 / CRC-16 / CRC-32 / CRC-32C

0 字符 · Ctrl+Enter
CRC 校验结果将显示在这里
文件 CRC拖拽文件计算校验码
拖拽或点击选择文件
历史记录暂无
计算后自动记录
算法说明CRC 循环冗余校验
CRC-88 bit · 物联网/嵌入式
CRC-16/Modbus16 bit · 工业通信/Modbus
CRC-3232 bit · ZIP/以太网
CRC-32C32 bit · 数据库/iSCSI

在线CRC校验工具

免费在线CRC校验计算器。支持CRC-8、CRC-16/Modbus、CRC-32、CRC-32C四种算法,适用于串口通信、网络传输、文件校验等场景。

四种CRC算法

一次输入同时计算 CRC-8、CRC-16/Modbus、CRC-32、CRC-32C 四种校验码,满足不同协议和场景需求。

高性能计算

基于预计算查找表实现,计算速度极快。支持大文件CRC校验,拖拽即可计算。

完全本地处理

所有计算在浏览器本地完成,数据不经过任何服务器。支持文本和文件两种输入方式。

CRC算法百科

了解每种CRC算法的参数、特点与应用场景。

CRC-8

嵌入式/低速

多项式 0x07 · 1字节

最简单的CRC算法,输出1个字节。常用于1-Wire协议、SMBus总线、低速嵌入式通信。检错能力有限,适合短数据帧。

CRC-16/Modbus

工业/Modbus

多项式 0x8005 · 2字节

Modbus RTU协议的标准校验算法。广泛用于工业自动化、PLC通信、传感器网络。支持输入和结果反射,初始值0xFFFF。

CRC-32

ZIP/网络/文件

多项式 0x04C11DB7 · 4字节

最广泛使用的CRC算法。ZIP、PNG、GIF等文件格式的标准校验,以太网帧校验序列(FCS)也使用此算法。检错能力强,能检测所有奇数位错误。

CRC-32C

存储/文件系统

多项式 0x1EDC6F41 · 4字节

Castagnoli CRC,也称iSCSI CRC。比标准CRC-32有更好的错误检测能力。Intel SSE4.2提供硬件加速指令,现代CPU上性能极佳。用于Btrfs、ext4等文件系统。

应用场景

串口通信

RS232/RS485串口数据传输的标准校验方式。Modbus RTU协议使用CRC-16保证数据帧完整性。

网络传输

以太网帧使用CRC-32作为帧校验序列(FCS)。每个数据包的完整性都由CRC保障。

存储校验

ZIP、PNG、GIF等文件格式使用CRC-32。Btrfs、ext4文件系统采用CRC-32C保护数据安全。

嵌入式开发

单片机、传感器、IoT设备间的数据校验。CRC-8适合资源受限的嵌入式场景。

CRC校验专业知识

多项式除法

CRC的核心原理是将数据视为一个巨大的二进制数,用预定的生成多项式做模 2 除法,余数就是CRC值。不同的生成多项式决定了算法的检错能力。

查找表优化

实际实现中通常使用预计算的256项查找表,将逻辑运算换为查表操作,大幅提高计算速度。本工具即采用该方法,确保高性能。

CRC vs 哈希

CRC专为检测传输错误设计,计算快但不具备加密安全性。哈希函数(如SHA-256)设计目标是抗碰撞,适合安全场景但计算较慢。两者不可互替。

硬件加速

现代CPU提供了CRC硬件加速指令。Intel SSE4.2的CRC32C指令可达数GB/s吞吐量。ARM也有ACLE CRC32扩展。这使得CRC在高速存储场景中开销忽略不计。

常见问题

Q.CRC-16和CRC-32应该用哪个?

取决于协议要求。Modbus RTU规定使用CRC-16;ZIP文件、以太网规定使用CRC-32。一般来说,CRC位数越高,检错能力越强,但开销也越大。

Q.CRC能否用于数据加密?

绝对不能。CRC只是检错码,不提供任何安全性。攻击者可以轻松构造具有相同CRC值的不同数据。安全场景应使用哈希函数(如SHA-256)。

Q.为什么同样的数据算出不同的CRC?

不同的CRC算法参数(多项式、初始值、是否反射、结果异或值)会产生不同的结果。例如CRC-16有十几种变体,必须确保双方使用相同的参数集。

Q.CRC能检测出所有错误吗?

CRC能检测所有单比特和双比特错误,以及所有奇数位的突发错误。但存在极小概率的多位错误无法检测。CRC-32的未检测错误概率约为 1/2³²,即小于十亿分之一。