123456789 的 CRC-32
0xCBF43926 CRC-32/ISO-HDLC 为 0xCBF43926,也就是 ZIP、PNG、以太网和 gzip 用的那个变体。
CRC校验在线计算:粘贴十六进制或文本,一次算出 CRC-8/16/32 共 63 个变体,含 CRC16 Modbus。设备返回的值对不上时填进反查框,直接告诉你是哪个变体——MODBUS、CCITT-FALSE、XMODEM、KERMIT。全程浏览器本地计算。
| 变体 | 结果 | 多项式 | 初始值 | 输入/输出反转 | 最终异或 |
|---|---|---|---|---|---|
| CRC-8 | |||||
| CRC-8/AUTOSAR | 0x2F | 0xFF | false / false | 0xFF | |
| CRC-8/BLUETOOTH | 0xA7 | 0x00 | true / true | 0x00 | |
| CRC-8/CDMA2000 | 0x9B | 0xFF | false / false | 0x00 | |
| CRC-8/DARC | 0x39 | 0x00 | true / true | 0x00 | |
| CRC-8/DVB-S2 | 0xD5 | 0x00 | false / false | 0x00 | |
| CRC-8/GSM-A | 0x1D | 0x00 | false / false | 0x00 | |
| CRC-8/GSM-B | 0x49 | 0x00 | false / false | 0xFF | |
| CRC-8/HITAG | 0x1D | 0xFF | false / false | 0x00 | |
| CRC-8/I-432-1 CRC-8/ITU | 0x07 | 0x00 | false / false | 0x55 | |
| CRC-8/I-CODE | 0x1D | 0xFD | false / false | 0x00 | |
| CRC-8/LTE | 0x9B | 0x00 | false / false | 0x00 | |
| CRC-8/MAXIM-DOW CRC-8/MAXIM · DOW-CRC | 0x31 | 0x00 | true / true | 0x00 | |
| CRC-8/MIFARE-MAD | 0x1D | 0xC7 | false / false | 0x00 | |
| CRC-8/NRSC-5 | 0x31 | 0xFF | false / false | 0x00 | |
| CRC-8/OPENSAFETY | 0x2F | 0x00 | false / false | 0x00 | |
| CRC-8/ROHC | 0x07 | 0xFF | true / true | 0x00 | |
| CRC-8/SAE-J1850 CRC-8/J1850 | 0x1D | 0xFF | false / false | 0xFF | |
| CRC-8/SMBUS CRC-8 | 0x07 | 0x00 | false / false | 0x00 | |
| CRC-8/TECH-3250 CRC-8/AES · CRC-8/EBU | 0x1D | 0xFF | true / true | 0x00 | |
| CRC-8/WCDMA | 0x9B | 0x00 | true / true | 0x00 | |
| CRC-16 | |||||
| CRC-16/ARC CRC-16 · CRC-16/IBM · CRC-16/LHA | 0x8005 | 0x0000 | true / true | 0x0000 | |
| CRC-16/CDMA2000 | 0xC867 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/CMS | 0x8005 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/DDS-110 | 0x8005 | 0x800D | false / false | 0x0000 | |
| CRC-16/DECT-R R-CRC-16 | 0x0589 | 0x0000 | false / false | 0x0001 | |
| CRC-16/DECT-X X-CRC-16 | 0x0589 | 0x0000 | false / false | 0x0000 | |
| CRC-16/DNP | 0x3D65 | 0x0000 | true / true | 0xFFFF | |
| CRC-16/EN-13757 | 0x3D65 | 0x0000 | false / false | 0xFFFF | |
| CRC-16/GENIBUS CRC-16/DARC · CRC-16/EPC · CRC-16/EPC-C1G2 · CRC-16/I-CODE | 0x1021 | 0xFFFF | false / false | 0xFFFF | |
| CRC-16/GSM | 0x1021 | 0x0000 | false / false | 0xFFFF | |
| CRC-16/IBM-3740 CRC-16/CCITT-FALSE · CRC-16/AUTOSAR | 0x1021 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/IBM-SDLC CRC-16/X-25 · CRC-16/X25 · CRC-16/ISO-HDLC · CRC-B · X-25 | 0x1021 | 0xFFFF | true / true | 0xFFFF | |
| CRC-16/ISO-IEC-14443-3-A CRC-A | 0x1021 | 0xC6C6 | true / true | 0x0000 | |
| CRC-16/KERMIT CRC-16/CCITT · CRC-16/CCITT-TRUE · CRC-16/V-41-LSB · CRC-CCITT | 0x1021 | 0x0000 | true / true | 0x0000 | |
| CRC-16/LJ1200 | 0x6F63 | 0x0000 | false / false | 0x0000 | |
| CRC-16/M17 | 0x5935 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/MAXIM-DOW CRC-16/MAXIM | 0x8005 | 0x0000 | true / true | 0xFFFF | |
| CRC-16/MCRF4XX | 0x1021 | 0xFFFF | true / true | 0x0000 | |
| CRC-16/MODBUS | 0x8005 | 0xFFFF | true / true | 0x0000 | |
| CRC-16/NRSC-5 | 0x080B | 0xFFFF | true / true | 0x0000 | |
| CRC-16/OPENSAFETY-A | 0x5935 | 0x0000 | false / false | 0x0000 | |
| CRC-16/OPENSAFETY-B | 0x755B | 0x0000 | false / false | 0x0000 | |
| CRC-16/PROFIBUS CRC-16/IEC-61158-2 | 0x1DCF | 0xFFFF | false / false | 0xFFFF | |
| CRC-16/RIELLO | 0x1021 | 0xB2AA | true / true | 0x0000 | |
| CRC-16/SPI-FUJITSU CRC-16/AUG-CCITT | 0x1021 | 0x1D0F | false / false | 0x0000 | |
| CRC-16/T10-DIF | 0x8BB7 | 0x0000 | false / false | 0x0000 | |
| CRC-16/TELEDISK | 0xA097 | 0x0000 | false / false | 0x0000 | |
| CRC-16/TMS37157 | 0x1021 | 0x89EC | true / true | 0x0000 | |
| CRC-16/UMTS CRC-16/BUYPASS · CRC-16/VERIFONE | 0x8005 | 0x0000 | false / false | 0x0000 | |
| CRC-16/USB | 0x8005 | 0xFFFF | true / true | 0xFFFF | |
| CRC-16/XMODEM CRC-16/ACORN · CRC-16/LTE · CRC-16/V-41-MSB · ZMODEM | 0x1021 | 0x0000 | false / false | 0x0000 | |
| CRC-32 | |||||
| CRC-32/AIXM CRC-32Q | 0x814141AB | 0x00000000 | false / false | 0x00000000 | |
| CRC-32/AUTOSAR | 0xF4ACFB13 | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/BASE91-D CRC-32D | 0xA833982B | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/BZIP2 CRC-32/AAL5 · CRC-32/DECT-B · B-CRC-32 | 0x04C11DB7 | 0xFFFFFFFF | false / false | 0xFFFFFFFF | |
| CRC-32/CD-ROM-EDC | 0x8001801B | 0x00000000 | true / true | 0x00000000 | |
| CRC-32/CKSUM CRC-32/POSIX | 0x04C11DB7 | 0x00000000 | false / false | 0xFFFFFFFF | |
| CRC-32/ISCSI CRC-32C · CRC-32/BASE91-C · CRC-32/CASTAGNOLI · CRC-32/INTERLAKEN | 0x1EDC6F41 | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/ISO-HDLC CRC-32 · CRC-32/ADCCP · CRC-32/V-42 · CRC-32/XZ · PKZIP | 0x04C11DB7 | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/JAMCRC | 0x04C11DB7 | 0xFFFFFFFF | true / true | 0x00000000 | |
| CRC-32/MEF | 0x741B8CD7 | 0xFFFFFFFF | true / true | 0x00000000 | |
| CRC-32/MPEG-2 | 0x04C11DB7 | 0xFFFFFFFF | false / false | 0x00000000 | |
| CRC-32/XFER | 0x000000AF | 0x00000000 | false / false | 0x00000000 | |
当你的设备文档给出的多项式不在上表中时使用。
由 Go Tools 工程团队构建并验证。
0xCBF43926 CRC-32/ISO-HDLC 为 0xCBF43926,也就是 ZIP、PNG、以太网和 gzip 用的那个变体。
0x4B37 0x4B37,参数为 poly 0x8005、init 0xFFFF、输入输出反转、无最终异或。
0x29B1 0x29B1。它在目录里的正式名是 CRC-16/IBM-3740:poly 0x1021、init 0xFFFF、不反转。
63 本计算器收录 63 个:位宽 8 的 20 个、位宽 16 的 31 个、位宽 32 的 12 个。
循环冗余校验把一段数据看作一个很长的二进制多项式的系数,用模 2 运算除以一个固定的生成多项式,留下余数。这个余数就是校验值。这种构造之所以流行,一是因为除法归结为移位和异或,在硬件上几乎不要钱;二是因为代数给的是硬保证而不是统计上的指望:一个选得好的 16 位多项式能检出全部单比特错误、有效块长内的全部双比特错误、任意奇数个比特翻转,以及全部长度不超过 16 位的连续突发错误。
真正让 CRC 在实践中变得混乱的,是多项式只不过是六个参数之一。两个实现可以在多项式上完全一致,结果却没有一个对得上——因为它们在寄存器初始值上不同,在输入字节和输出寄存器是否颠倒位序上不同,在最后异或进去的常数上也不同。一个 CRC 变体指的是这整组参数,不是多项式本身——这就是为什么「CRC-16」这样的名字单独拿出来几乎什么也没说明,也是本页在每个结果旁边列出多项式、初始值、两个反转标志和最终异或,并把位宽作为分组标题的原因。
还有一点是表格显示不出来的:16 位多项式能检出任意奇数个比特翻转,前提是 x+1 整除它。最常遇到的两个——0x1021 和 0x8005——满足这个条件,但并非所有多项式都满足:CRC-16/T10-DIF 和 CRC-16/PROFIBUS 就在例外之列。
// CRC-16/MODBUS: poly=0x8005, init=0xFFFF, refin/refout=true, xorout=0x0000
// Written in the reflected form, so the polynomial appears bit-reversed as 0xA001.
function crc16Modbus(bytes) {
let crc = 0xffff;
for (const byte of bytes) {
crc ^= byte;
for (let i = 0; i < 8; i++) {
crc = crc & 1 ? (crc >>> 1) ^ 0xa001 : crc >>> 1;
}
}
return crc;
}
crc16Modbus([0x01, 0x03, 0x00, 0x00, 0x00, 0x0a]); // 0xCDC5
// On the wire Modbus RTU sends the low byte first: ... 0x0A 0xC5 0xCD CRC-8、CRC-16、CRC-32 随着你输入同步重算。不用先在下拉框里猜一个才能看到东西。
填入别人给你的校验值,能产出它的变体会被高亮,识别一个未知算法从试二十次变成一步。
每行同时给出 RevEng 目录的正式名和现场实际使用的别名——CCITT-FALSE、CRC-16/IBM、CRC-32C、X-25 等等。
多项式、初始值、两个反转标志和最终异或就列在结果旁边,方便你对着规范核实是不是真的匹配。
位宽、多项式、初始值、反转和最终异或全部可改,用于那些从未进过任何目录的多项式。
计算在你的浏览器里发生。生产报文和固件镜像不会离开这台机器。
123456789
CRC-32/ISO-HDLC = 0xCBF43926, CRC-16/MODBUS = 0x4B37, CRC-8/SMBUS = 0xF4
RevEng 目录里每个 CRC 变体都公布了它对 ASCII 字符串 123456789 的结果。这让这个输入成了标准自检:某个库如果和这里的表对不上,那是库错了。
01 03 00 00 00 0A
CRC-16/MODBUS = 0xCDC5
从 1 号从机读保持寄存器。Modbus RTU 在线路上先发 CRC 低字节,所以这帧实际是 01 03 00 00 00 0A C5 CD——相当一部分「校验值对不上」都出在这个顺序上。
DEADBEEF
MODBUS = 0xC19B, CCITT-FALSE = 0x4097, XMODEM = 0xC457, KERMIT = 0x1915
以十六进制模式读取,因此是四个字节,而不是字符串的八个字符。四个最常见的 CRC-16 变体对它们给出完全不相干的结果。这不是哪里坏了:它们的区别在初始值、反转和最终异或,不在对错。
123456789,期望值 0x29B1
CRC-16/IBM-3740(你的手册上多半写作 CRC-16/CCITT-FALSE)
这正是本工具要解决的场景:你手上有数据,也有别人算出的校验值,唯独不知道变体名——于是反过来找能复现它的那组参数。
协议报文几乎一定是十六进制。只有在给一个字面字符串算校验时才用文本模式,比如 123456789 这个自检值。
十六进制模式下分隔符会被忽略,所以 01 03 00 00 00 0A、0x01 0x03 和 010300 00000A 都能识别。
表格按位宽分组。正式名取自 RevEng 目录,下面一行是你设备手册上更可能出现的别名。
如果你已经有校验值、想知道它属于哪个变体,把它填进「期望值」框,看高亮那一行。
停在文本模式下,工具算的是你那串十六进制转储的 ASCII 字符,而不是它所表示的字节。切到十六进制模式——模式开关下方的字节数会告诉你当前是按哪种读法。
Text mode, input "01 03" -> 5 bytes: 30 31 20 30 33
Hex mode, input "01 03" -> 2 bytes: 01 03
Modbus RTU 先传 CRC 低字节。末尾是 C5 CD 的帧,它的校验值是 0xCDC5,不是 0xC5CD。
expected 0xC5CD (bytes read in transmission order)
expected 0xCDC5 (bytes reassembled low-byte-first)
CRC 覆盖的是它前面那些字节。把整帧连尾部一起喂回去,得到的是残差而不是校验值。
01 03 00 00 00 0A C5 CD <- trailer included
01 03 00 00 00 0A <- payload only
收录在案的 16 位变体有 31 个。缺了另外五个参数,这个名字什么也没缩小。
spec says: "trailer is a CRC-16"
spec says: "CRC-16/MODBUS, poly 0x8005, init 0xFFFF, refin/refout true"
安全工具
在线解密 AES —— 支持 GCM/CBC/CTR、口令或原始密钥,自动识别 OpenSSL 与 CryptoJS 的 "U2FsdGVkX1" 格式。100% 浏览器本地运行,密钥永不离开页面。
安全工具
免费在线 AES 加密工具 — 支持 AES-128/192/256、GCM/CBC/CTR 模式,可用口令(PBKDF2)或原始密钥。100% 浏览器本地运行,不上传任何数据。
安全工具
在线生成并验证 bcrypt 密码哈希——可调成本因子,支持 $2b$/$2a$/$2y$ 前缀。100% 在浏览器中运行,密码绝不上传。
安全工具
免费在线 HMAC 生成与校验工具。支持文本、Hex 或 Base64 密钥计算 HMAC-SHA256/SHA1/SHA384/SHA512,输出 Hex/Base64/Base64URL。100% 在浏览器中运行 —— 密钥永不离开页面。
安全工具
免费 JWT 解码器,在线即时解码 JWT 令牌。查看头部、载荷、签名以及过期时间、算法和声明详情。100% 浏览器本地运行——令牌绝不离开你的设备。无需注册、无跟踪。
安全工具
免费在线 JWT 生成器与编码器。构建头部和载荷,使用 HS256、RS256 或 ES256 即时签名。100% 浏览器本地运行——你的密钥和私钥绝不离开设备。