CRC校验计算器
计算多种CRC校验码,支持文本、十六进制和文件输入
输入UTF-8文本,将自动转换为字节
点击选择文件或拖拽文件到此处
计算结果
所有CRC算法结果
关于CRC算法
循环冗余校验(CRC)是一种强大的检错码,广泛应用于数字通信网络和存储设备中,用于检测原始数据的意外变动。系统对输入的数据块计算一个基于多项式除法余数的短校验值,并将其附加到数据块后。
在检索或接收数据时,重新计算校验值。如果计算结果与接收到的校验值不匹配,则表明数据已损坏,可以采取纠错措施。CRC的设计初衷是易于在二进制硬件中实现,易于进行数学分析,并且特别擅长检测传输通道噪声引起的常见错误。
支持的CRC标准
本工具实现了工业和网络协议中广泛使用的多种标准CRC算法。每个变体都由其多项式、初始值、异或输出和反射属性定义。
| 算法 | 位宽 | 多项式 | 应用场景 |
|---|---|---|---|
| CRC-8 | 8 bit | 0x07 | 简单数据校验、传感器 |
| CRC-16/Modbus | 16 bit | 0x8005 | Modbus协议、工业通信 |
| CRC-16/CCITT | 16 bit | 0x1021 | X.25、HDLC、蓝牙 |
| CRC-32 | 32 bit | 0x04C11DB7 | ZIP、Ethernet、PNG |
| CRC-32C | 32 bit | 0x1EDC6F41 | iSCSI、SCTP、Btrfs |
| CRC-64/ECMA | 64 bit | 0x42F0E1EBA9EA3693 | ECMA-182、XZ压缩 |
常见应用场景
常见问题
CRC 是什么?它与密码哈希有什么区别?
CRC(循环冗余校验)是一种校验和算法,用于检测数据传输或存储过程中的意外位错误。与 SHA-256 等密码哈希不同,CRC 并非为防止恶意篡改而设计——攻击者可以精心构造出能产生任意目标 CRC 值的数据。在通信协议中使用 CRC 进行错误检测,在需要安全性的完整性验证场景中使用密码哈希。
应该选择哪种 CRC 变体?
CRC-32(ISO 3309)广泛用于以太网、ZIP 和 PNG 文件。CRC-16/MODBUS 是工业协议的标准。CRC-16/CCITT 适用于串行通信。CRC-8 适合嵌入式系统中的短消息。如果协议规范指定了特定的多项式和初始值,请务必完全匹配。
为什么我的 CRC 计算结果与预期值不符?
CRC 结果取决于四个参数:多项式、初始值、输入/输出反转以及最终异或值。其中任何一个不匹配都会产生不同的结果。另外还要检查输入是否以 UTF-8、ASCII 还是原始字节编码——相同的文本字符串可能产生不同的字节序列,进而得出不同的 CRC 值。
CRC-16/MODBUS 和 CRC-16/CCITT 有什么区别?
两者都是 16 位 CRC,但使用不同的多项式和初始值。CRC-16/MODBUS 使用多项式 0x8005、初始值 0xFFFF,输入和输出都做位反转。CRC-16/CCITT(也称 CRC-CCITT 或 CRC-16-IBM)使用多项式 0x1021、初始值 0xFFFF。这两种算法对相同数据会产生完全不同的输出。
能计算二进制文件的 CRC 而不仅仅是文本吗?
可以——使用十六进制输入格式粘贴二进制数据的十六进制字节。工具会处理原始字节值,无论它们是否表示可打印字符。对于非常大的二进制文件,命令行工具(如 cksum)或 Python 的 binascii.crc32() 更为实用。