CoderTools

CRC校验计算器

计算多种CRC校验码,支持文本、十六进制和文件输入

输入UTF-8文本,将自动转换为字节

关于CRC算法

循环冗余校验(CRC)是一种强大的检错码,广泛应用于数字通信网络和存储设备中,用于检测原始数据的意外变动。系统对输入的数据块计算一个基于多项式除法余数的短校验值,并将其附加到数据块后。

在检索或接收数据时,重新计算校验值。如果计算结果与接收到的校验值不匹配,则表明数据已损坏,可以采取纠错措施。CRC的设计初衷是易于在二进制硬件中实现,易于进行数学分析,并且特别擅长检测传输通道噪声引起的常见错误。

支持的CRC标准

本工具实现了工业和网络协议中广泛使用的多种标准CRC算法。每个变体都由其多项式、初始值、异或输出和反射属性定义。

算法 位宽 多项式 应用场景
CRC-88 bit0x07简单数据校验、传感器
CRC-16/Modbus16 bit0x8005Modbus协议、工业通信
CRC-16/CCITT16 bit0x1021X.25、HDLC、蓝牙
CRC-3232 bit0x04C11DB7ZIP、Ethernet、PNG
CRC-32C32 bit0x1EDC6F41iSCSI、SCTP、Btrfs
CRC-64/ECMA64 bit0x42F0E1EBA9EA3693ECMA-182、XZ压缩

常见应用场景

网络数据包校验(以太网帧、IP数据包)
文件完整性验证(ZIP归档、PNG图像)
工业通信协议(Modbus RTU、现场总线)
存储系统数据校验(iSCSI、SSD控制器)
嵌入式系统数据传输(IoT传感器、USB通信)
固件和Bootloader完整性检查

常见问题

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() 更为实用。

快捷菜单

暂无访问记录