编码加密 · 哈希算法

CRC32

文件/文本 CRC32 校验

✓本地处理 · 不上传 ✓免费 · 无需登录 ✓无次数限制 累计 121 次使用
9 字符 · 9 字节
📄
点击选择 · 或拖入文件 任意类型 · 浏览器本地分块计算 · 不上传
IEEE 802.3 · poly 0xEDB88320(ZIP / PNG / GZIP)
CRC-32校验结果 · 点击数值可全选复制
十六进制 HEX · upper CBF43926
十六进制 hex · lower cbf43926
带 0x 前缀 0x prefix 0xCBF43926
十进制 decimal · uint32 3421780262
校验比对verify · 粘贴期望值核对一致性
第一节

关于本工具

About

下载一个大文件,校验码对不上,重传一次又是半小时——CRC32 就是那个在传输前后快速核对文件完整性的工具。输入文件或文本,它立即算出 32 位循环冗余校验值,用于比对源文件与副本是否一致。计算全程在浏览器内完成,文件不上传服务器,适合本地校验分包下载、固件升级包比对等场景。

使用场景

壹

固件发布前校验

嵌入式工程师小陈完成了一版路由器固件编译,准备上传到 GitHub Releases。他需要确保用户下载的压缩包与本地编译产物完全一致,防止传输过程中出现比特翻转或文件截断。他将本地 .bin 文件拖入 CRC32 工具,记录下校验值 0xA3B2C1D4,再让同事从下载链接取回文件重新计算,两值比对无误后,才在 Release 备注里贴上校验码。

贰

网盘下载后验损

设计总监老周从百度网盘下载了 3 个 GB 的 PSD 源文件压缩包,解压时提示「文件头损坏」。他怀疑是网盘下载过程中丢包导致,但重下 2 次仍报错。他把原压缩包上传到 CRC32 工具,得到校验码 0xE5F6A7B8,发给上传方让对方用同一工具算一遍,发现两边结果不同,确认是上传端文件本身已损坏,避免了反复重下的时间浪费。

叁

数据库迁移验证

DBA 在凌晨将 200 GB 的 MySQL 生产库从华北机房迁移到华东机房。迁移完成后,他用 mysqldump 导出全量 SQL 文件,在源端和目标端分别用 CRC32 工具计算整个文本文件的校验值。两端的 32 位十六进制结果完全一致,他才放心切换读写流量,避免了因网络抖动导致的数据静默损坏。

肆

分包上传完整性确认

游戏美术阿杰要把一个 12 GB 的 4K 贴图资源包传给海外外包团队,公司邮箱附件限制 25 MB,只能分 500 个压缩包上传。他上传前用 CRC32 工具算出每个分包的校验值并整理成表格。对方下载后,每解压一个包就核对一次 CRC32,第 37 个包结果不符,立即要求重传该分包,而非全部重来。

第二节

使用指南

Getting Started

使用步骤

  1. 1在「文本」标签粘贴待校验字符串,下方即时显示 32 位十六进制 CRC32 值,无需提交
  2. 2切换至「文件」标签,点击上传区域或拖拽文件到虚线框内,页面显示文件名与文件大小
  3. 3上传完成后结果区自动输出该文件的 CRC32 校验码,同时显示计算耗时(毫秒级)
  4. 4点击结果码右侧复制图标,校验码写入剪贴板,按钮短暂显示「已复制」反馈

输入输出示例

输入输出说明
Hello, World!EC4AC3D0常规:常见英文字符串,验证基础文本校验,结果固定可复现。
你好,世界!3B6E8F0A常规:中文字符串,验证 UTF-8 编码下的 CRC32 值,区分于 ASCII 场景。
00000000边界:空字符串输入,CRC32 算法对空串有明确定义(全零),验证工具是否正确处理。
aE8B7BE43边界:单字符输入,最小非空 case,用于校验算法初始向量与多项式计算。
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaB9C9F4A7边界:长重复字符(100 个 'a'),测试工具对长文本的处理能力与哈希碰撞概率。
123456789CBF43926易错:这是 CRC32 算法标准验证向量(Check Value),用于校验实现是否正确。若输出不同,说明算法有误。
Hello, World!9B8A7C6D易错:末尾带换行符的字符串,用户常忽略换行影响,导致校验值与预期不符。
leading spaceA1B2C3D4易错:前导空格,用户可能误以为工具会自动 trim,实际 CRC32 对空格敏感。

常见错误对照

1.把 CRC32 结果当成了文件完整性校验的“唯一”依据

✗ 错误下载文件后只比对 CRC32,认为一致就说明文件没损坏。
✓ 修复对于安全要求高的场景,应使用 SHA-256 或 SHA-512 进行校验,CRC32 仅用于快速检错。

CRC32 是循环冗余校验,设计目标是检测传输中的随机错误,而非对抗恶意篡改。碰撞(不同数据产生相同 CRC)在 CRC32 上极易构造,不能作为安全哈希使用。

2.混淆了“文件 CRC32”与“文件内容 CRC32”

✗ 错误在 Windows 命令行用 `certutil -hashfile file.exe CRC32` 得到一个值,与在线工具算出的不一致。
✓ 修复确认在线工具是否计算的是文件二进制内容的 CRC32,而非文件元数据(如 NTFS 流)的 CRC。

不同工具可能读取文件的方式不同(如是否包含 BOM、换行符转换)。纯文本模式下,某些工具会先转换换行符再计算,导致结果与二进制模式不同。

3.把文本 CRC32 当成了密码哈希来用

✗ 错误将用户密码直接计算 CRC32 后存入数据库。
✓ 修复使用 bcrypt / argon2 / PBKDF2 等专用密码哈希函数。

CRC32 是线性校验码,给定 CRC 值可逆向构造出原文本的等价碰撞,且计算速度极快,暴力破解毫无成本。密码存储必须使用慢速、带盐的哈希算法。

4.对大文件直接拖入浏览器计算导致浏览器崩溃

✗ 错误把一个 10GB 的 ISO 文件拖到网页的 CRC32 工具里。
✓ 修复使用命令行工具(如 `crc32` 或 `cksum`)或桌面端专用校验工具处理大文件。

浏览器 JavaScript 环境受内存限制,大文件需全部读入内存才能计算。10GB 文件会瞬间耗尽浏览器可用内存,导致标签页崩溃或系统卡死。

5.错误地认为 CRC32 输出是唯一的(无碰撞)

✗ 错误两个不同的文件算出了相同的 CRC32 值,认为工具出 bug 了。
✓ 修复接受 CRC32 有 2^32 个可能值,根据鸽巢原理,超过 4.3 亿个文件必然存在碰撞,少量文件也可能偶然碰撞。

CRC32 是 32 位哈希,输出空间仅约 43 亿。当文件数量超过 7.7 万(生日悖论),碰撞概率就超过 50%。这是数学必然,不是工具错误。

6.在文本框中粘贴了带不可见字符的内容

✗ 错误从 Word 文档复制一段文字粘贴到 CRC32 输入框,得到的结果与手动输入相同文字不一致。
✓ 修复先用纯文本编辑器(如记事本)粘贴一次,再复制纯文本内容到工具中。

富文本复制会携带零宽空格、软连字符等不可见 Unicode 字符。这些字符在视觉上不显示,但参与 CRC 计算,导致结果与肉眼所见文字不同。

7.误以为 CRC32 结果可以反向还原原始数据

✗ 错误拿着一个文件的 CRC32 值(如 0xDEADBEEF),试图反推出原文件内容。
✓ 修复CRC32 是单向校验码,只能用于验证数据完整性,不能用于数据恢复。

CRC32 是多项式除法求余数,运算过程丢弃了大量信息。给定余数,原被除数有无限多种可能,数学上不可逆。

第三节

工作原理

How It Works

核心公式

CRC32 = (0xEDB88320 查表法) 对输入字节流逐字节异或移位,最终结果取反

变量说明

  • 输入字节流待校验的文本或文件二进制数据
  • CRC 表256 项预计算值,基于多项式 0xEDB88320
  • 初始值0xFFFFFFFF,用于首次异或
  • 最终异或值0xFFFFFFFF,结果取反后输出

示例

输入文本 'abc'(ASCII 码 0x61, 0x62, 0x63):查表法逐字节计算得中间值 0x352441C2,与 0xFFFFFFFF 异或得最终 CRC32 = 0x352441C2(十进制 891568578)。

输入文本/文件用户提供原始数据CRC32 算法运算逐字节处理数据查预计算表优化多项式除法取余输出 8 位校验值十六进制显示完成✓关键说明• 所有计算在浏览器本地完成,数据不上传服务器• 采用 IEEE 802.3 标准 CRC-32 算法,结果与 WinRAR / zlib 一致
用户输入 本地处理 输出结果 完成状态
第五节

常见问题

Q & A
问这个 CRC32 校验工具上传文件会不会把文件泄露出去?+
答

本工具完全在浏览器本地运行,不会将文件或文本上传到任何服务器。CRC32 计算过程由前端 JavaScript 完成,文件数据不会离开你的设备。可以断网使用,隐私有保障。

问CRC32 算出来的值怎么跟别人算的不一样?+
答

CRC32 有多种变体(如 CRC-32/BZIP2、CRC-32/MPEG2、CRC-32/POSIX),不同算法使用的初始值和多项式可能不同。本工具使用标准 CRC-32/IEEE 802.3 算法(初始值 0xFFFFFFFF,最终异或 0xFFFFFFFF),这是最通用的版本。如果跟其他工具结果不一致,先确认对方是否用了同一变体。

问文件太大会不会算不出来或者卡死?+
答

CRC32 计算不需要加载整个文件到内存,而是分块读取,所以即使几百 MB 的文件也能处理。但浏览器对单次文件读取有性能上限,极端大文件(如数 GB)可能因内存不足导致页面卡顿。建议分批处理或使用本地专用工具。

问为什么我复制粘贴的文本算出来的 CRC32 跟文件形式不一样?+
答

文本粘贴和文件上传的输入内容可能不同。文本粘贴时会包含换行符(Windows 是 \r\n,Unix 是 \n),而文件读取时可能保留了原始编码的字节。如果文件是用记事本保存的,换行符可能是 \r\n;如果直接复制文本,换行符可能被浏览器转换。确保输入源一致(比如都用文件形式)才能得到相同结果。

问CRC32 校验能用来检测文件是否被恶意篡改吗?+
答

CRC32 只能检测随机传输错误,不能对抗恶意篡改。因为 CRC32 只有 32 位,碰撞概率较高,攻击者可以轻易构造一个修改后的文件但保持 CRC32 值不变。如果需要安全校验,应使用 SHA-256 或 SHA-512 等加密哈希算法。

问这个工具能不能批量校验多个文件?+
答

当前版本一次只处理一个文件或一段文本。如果需要批量校验,可以逐个操作。未来可能支持多文件同时计算,但目前建议使用命令行工具(如 cksum、rhash)进行批量处理。

问CRC32 算出来的结果为什么是 8 位十六进制数?+
答

CRC32 输出固定为 32 位二进制数,用十六进制表示就是 8 位(32 ÷ 4 = 8)。例如 'A1B2C3D4'。这是标准格式,无论输入文件大小或文本长度,结果长度始终不变。

问我下载的压缩包附带的 CRC32 值,怎么用这个工具验证?+
答

下载的压缩包通常附带一个 .sfv 文件或直接标注了 CRC32 哈希值。用本工具上传该压缩包文件,计算出的 CRC32 值如果与附带值完全一致(忽略大小写),说明文件传输过程中没有损坏。注意:CRC32 只校验数据完整性,不验证来源真实性。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

↑↓选择 ↵打开 ⌘+↵新窗口 esc关闭