CRC-32 校验码计算
编码所有处理都在浏览器本地完成,数据不上传服务器
输入
把文件拖到这里可直接载入
输出
算出文本的 CRC-32 校验值。CRC 是最常见的一类检错码 —— 它不防篡改(没有密钥,谁都能重算),但能可靠地发现传输和存储中的意外损坏:网络报文、压缩包、磁盘扇区、固件镜像都在用它做完整性校验。要留意的是「CRC-32」并不是一个固定的算法,而是一族:同一个多项式配上不同的初始值、输入输出是否按位反转、结果异或值,就得到互不兼容的校验值,而它们算出来的数字毫无关系。这里把六个常用变体都列了出来,切换时下方会说明各自用在哪里。输入按 UTF-8 字节处理,结果与 zlib、与各家工具逐位一致。
功能
- 六个变体:IEEE 802.3、Castagnoli(CRC-32C)、Koopman、BZIP2、JAMCRC、MPEG-2
- 输出十六进制(可切大小写)或十进制
- 中文按 UTF-8 字节计算,与 zlib、与各语言的实现一致
- 每个变体标注用途 —— 换之前先看清对面系统用的是哪一个
- 查表实现,几 MB 的输入也是毫秒级
- 计算只在本机进行,内容不会上传
使用方法
- 把内容粘贴进输入框,结果实时出现
- 按对面的系统选变体(默认 IEEE,也就是平时说的 CRC-32)
- 按需切换十六进制 / 十进制与大写
- 点「复制」取走校验值
常见问题
- CRC-32、CRC-32C、CRC-32K 有什么区别?
- 多项式不同,所以同一份数据算出来是三个完全不同的值。CRC-32(IEEE 802.3)是最常见的那个,zip、gzip、PNG 都用它;CRC-32C(Castagnoli)用在 iSCSI、SCTP、ext4 和一批存储系统上,它的多项式经过挑选,硬件实现更快;CRC-32K(Koopman)的检错能力在所有 32 位 CRC 里最强,用于对可靠性要求高的场合。选哪个完全取决于对面的系统,不能凭喜好。
- 为什么我算的和网上其他工具不一样?
- 九成是变体选错了。同样是 CRC-32,加上初始值、是否反转、结果异或值这三个参数,就能派生出六个互不兼容的算法,而它们给出的都是「格式正确的 8 位十六进制」。先确认对面用的是哪个变体(多数协议文档会写明,或给出一个「输入 123456789,输出是多少」的验证值),再来对本工具的选项。本工具每个变体的检定值都与 CRC 参数目录一致。
- CRC 能当哈希或签名用吗?
- 不能。CRC 的设计目标是发现意外错误(传输噪声、位翻转),不是抵抗有意篡改 —— 它没有密钥,任何人都能对改过的数据重算出一个正确的校验值。要防篡改请用 HMAC 或数字签名;要校验「文件有没有下坏」用 CRC 或 SHA-256 都可以,但既然 SHA-256 同样便宜,现在的通行做法是直接用它。
- 为什么空输入的校验值不是全零?
- 因为变体带初始值。CRC-32 的初始值是 0xFFFFFFFF,空输入时它与结果异或值 0xFFFFFFFF 恰好抵消,所以得到 00000000;而 CRC-32/MPEG-2 的结果异或值是 0,空输入就得到 FFFFFFFF。这几个参数正是各变体「看起来都是 CRC-32 却互不兼容」的来源。本工具对空输入返回空串,不显示校验值 —— 那通常只是还没粘贴内容。
相关工具
文件哈希
编码拖入文件即可算出 MD5、SHA-1、SHA-256、SHA-512 与 CRC-32,用来校验下载是否完整、文件有没有被改过。文件不上传,全部在本机计算。
CRC-16 校验
编码计算文本的 CRC-16 校验值,覆盖 ARC、Modbus、XMODEM、KERMIT 等九个常用变体,每个都注明用途,可切十六进制或十进制。
Hex 转换
编码十六进制与文本互转:支持 0x、\x、空格、冒号等常见写法,中文按 UTF-8 逐字节还原,并给出字节数。全部在浏览器本地完成,内容不上传。
哈希计算
编码算出文本的 MD5、SHA-1、SHA-256 或 SHA-512 摘要,也可算老系统用的 MD4 与 MD2,中文按 UTF-8 字节计算。全部在本地完成。
Base64 编解码
编码把文本转成 Base64,或把 Base64 还原成文本,中文与 emoji 都按 UTF-8 正确处理。全部在浏览器本地完成,内容不上传。
URL 编解码
编码把中文、空格与符号转义成 %XX,或把 %XX 还原成文本;整条 URL 与单独的参数值要选对方式,选错不会报错,但链接会打不开。全部在浏览器本地完成。