CRC 计算器(CRC-8、CRC-16、CRC-32、CRC-64)
在线计算文本或十六进制字节的 CRC-32、CRC-32C、CRC-16(MODBUS、CCITT、XMODEM)、CRC-8 和 CRC-64。一次列出全部变体,支持十六进制或十进制输出。
完全在浏览器中运行,您的数据不会被上传。
什么是 CRC 计算器?
循环冗余校验(CRC)是一种简短的校验值,用于检测数据中的意外改动。本计算器可为文本、十六进制或 Base64 输入计算 CRC-32(zip、PNG、以太网)、CRC-32C(iSCSI、ext4、SCTP)、CRC-32/BZIP2、CRC-32/MPEG-2、CRC-16/ARC、CRC-16/MODBUS、CRC-16/CCITT-FALSE、CRC-16/XMODEM、CRC-16/KERMIT、CRC-8/SMBUS、CRC-8/MAXIM 和 CRC-64/XZ,并一次性列出所有变体,方便你找出设备或文件格式实际使用的那一种。
如何使用 CRC 计算器
- 在 要计算哈希的文本 中输入文本,或将输入编码选为 十六进制字节,然后粘贴数据帧或数据包的字节(空格会被忽略)。
- 选择所需的 CRC 变体;结果显示在顶部,并在 所有 CRC 变体 表格中高亮。
- 选择 输出格式:十六进制(小写或大写)或 十进制。
- 点击 复制 复制所选的 CRC,或直接从表格中读取其他变体的值。
示例
123456789 (text)
cbf43926
CRC-32 的标准校验值。表格中还会显示 CRC-32C e3069283、CRC-16/MODBUS 4b37、CRC-16/CCITT-FALSE 29b1 和 CRC-64/XZ 995dc9bbdf1939fa。
何时使用 CRC 计算器
适用于计算或调试串行协议(Modbus RTU、XMODEM)、文件格式(ZIP、PNG、gzip)以及存储或网络系统(iSCSI、ext4)的校验值。也可以用一帧已知数据与表格对比,识别未知的 CRC 类型。不要把 CRC 用于安全目的:它是线性的,极易伪造,任何人都能修改数据后再修正 CRC。安全场景请改用密码学哈希或 MAC。
CRC 计算器 的工作原理
CRC 把数据看作一个很长的二进制多项式,计算它除以固定生成多项式(模 2)后的余数。每种变体由位宽、多项式、初始值、输入和输出位是否反转以及最终异或值共同定义(即 Rocksoft 模型)。本工具为每种变体使用 256 项查找表,并用目录中的校验值验证每一种变体——即 ASCII 字符串 123456789 的 CRC(例如 CRC-32 = cbf43926,CRC-32C = e3069283,CRC-16/MODBUS = 4b37)。结果以大端序十六进制数或十进制显示。
常见用例
- 在发送前计算 RTU 帧的 CRC-16/MODBUS
- 核对 ZIP 文件或 PNG 数据块中保存的 CRC-32
- 根据样本帧识别设备使用的 CRC 变体
- 为存储或网络测试数据生成 CRC-32C 值
- 为嵌入式 CRC 实现构造测试向量
安全提示
CRC 只能检测意外错误,无法防范蓄意篡改,因为借助简单的线性代数就能重新计算 CRC,或把它强制改成任意值。
常见问题
我该用哪种 CRC 变体?
这由协议或文件格式决定:ZIP/PNG/以太网使用 CRC-32,iSCSI/ext4/Btrfs 使用 CRC-32C,Modbus RTU 使用 CRC-16/MODBUS,XMODEM 使用 CRC-16/XMODEM。如果不确定,可以拿一帧已知数据与表格中的每一行对比。
Modbus 先发送 CRC 的低字节,为什么这里显示的十六进制不一样?
本工具把 CRC 作为一个数字以大端序十六进制显示(例如 4b37)。Modbus RTU 传输时低字节在前,所以线路上看到的是 37 4B。
为什么我的十六进制帧算出的 CRC 与预期不同?
请确认已选择 十六进制字节;如果选的是 文本 (UTF-8),参与计算的是字符 0–9 和 a–f 本身。另外,输入中不要包含 CRC 字节。
CRC-32 与 cksum 命令的结果一样吗?
不一样。POSIX cksum 使用未反转的 CRC-32 多项式,还会混入文件长度。zip、gzip 和 PNG 中的值请使用这里的 CRC-32。