文件哈希校验
编码所有处理都在浏览器本地完成,数据不上传服务器
算一个文件的哈希 —— 拖进来就行,文件不会被上传,所有计算都在你的浏览器里完成。 最常见的用途是校验下载:官网或镜像站给了 `sha256: 9f86d0…`,把它和你算出来的这个值一比,就知道文件在传输途中坏没坏、有没有被人动过手脚。开源项目的发布页、固件下载、Linux 发行版,现在基本都会附一个摘要。 ⚠️ 大文件是分块算的:超过 32 MB 就改用自带的增量实现,一次只读一块进内存,内存不随文件增大而线性增长,并实时显示进度(「已处理 1.2 GB / 4.0 GB」这种)。小文件仍走浏览器原生接口(更快)。用了哪条路会写在结果里 —— 不静默切换。仍然保留 512 MB 上限:纯 JS 的哈希比命令行慢得多,这个体积以上建议用 `sha256sum`(Windows:`certutil -hashfile 文件名 SHA256`)。 还有一句得提醒:MD5 和 SHA-1 早就不适合用来防篡改了,构造碰撞的成本已经低到普通机器就能承受。它们留在这里是因为大量老系统仍在用、许多老教程里给的也还是它们。真要验证文件有没有被动过,请用 SHA-256。 💡 比对不用自己动手:把发布页上那一行原样粘进「比对」框即可(大小写、`:` 分隔、`SHA256(file) = …` 这类前缀它都认),结果区最上面会直接给出「✓ 一致」或「✗ 不一致」,不一致时还会把两边的值并排列出来。
功能
- 一次算出五种:MD5、SHA-1、SHA-256、SHA-512、CRC-32
- ⚠️ 把发布页给的摘要直接粘进「比对」框,结果里直接给「✓ 一致 / ✗ 不一致」 —— 不用自己在两串 64 位十六进制之间逐字比对
- 比对时各种写法都认:大写、`:` 或空格分隔、`SHA256(file) = …` 这类前缀都会自动剥掉,算法由长度推断,不用你选
- 顺带列出文件名、体积、类型与修改时间
- 每一行都有独立的复制按钮,不用手动选中长串
- 空文件也算得出确定的摘要,而不是空输出
- ⚠️ 超过 32 MB 自动分块计算:内存不随文件增大而线性增长,并显示进度(Web Crypto 没有增量接口,分块走自带的纯 JS 实现)
- 结果里注明用的是「分块(省内存)」还是「一次性」,不静默切换
- 超过 512 MB 时说明原因,并指出该换成哪个命令行工具
- 文件不上传,断网也能正常用
使用方法
- 把文件拖进虚线框,或点击选择文件
- 结果立刻出来,五种摘要自上而下并列
- 有官方摘要的话,粘进「比对」框,最上面会直接给出结论
- 点任意一行右侧的复制按钮复制该值
常见问题
- 为什么我算出来的 SHA-256 和官网给的对不上?
- 先排查这三件事。一是文件没下完:下载中断时浏览器有时会留下一个看起来正常的残包,体积与完整版不同 —— 对比一下这里显示的大小。二是版本不同:同一个软件的不同版本、不同架构(x64 / arm64)、不同镜像的摘要本来就各不相同,确认你下的是发布页上那一个。三是真的被改过:如果大小和版本都对得上、摘要把把都对不上,那就该考虑文件在传输途中被替换过 —— 尤其是从非官方渠道下载的。
- MD5 还能用吗?
- 分场景。防传输损坏勉强可以:下载过程中随机坏掉几个字节,MD5 大概率能发现,CRC-32 也够用。防人为篡改不行:MD5 与 SHA-1 的碰撞已经被实际构造出来了,攻击者可以让一个恶意文件和一个正常文件拥有相同的 MD5 —— 也就是说,摘要对上并不能证明文件没被换过。真要防篡改请用 SHA-256。另外存密码更不能用它:那是 bcrypt / scrypt / Argon2 的活。
- 大文件是怎么算的?为什么还有 512 MB 的上限?
- 超过 32 MB 的文件走分块路径:工具自带的增量 SHA / MD5 / CRC 实现一次只吃一块数据,内存不随文件增大而线性增长,并实时显示进度;每块之间会让出主线程一帧,界面因此不会冻住。小文件仍然交给浏览器的原生 `crypto.subtle`,更快。之所以还设 512 MB 上限:纯 JS 的哈希比原生命令行慢得多,这个体积以上用 `sha256sum` 或 `certutil -hashfile` 更合适。⚠️ 顺带说明:本工具一次只处理一个文件,没有「两个文件逐字节比对」这个功能 —— 外壳的契约就是一次一个文件。要核对某个文件,把官方摘要粘进「比对」框即可。
相关工具
哈希计算
编码算出文本的 MD5、SHA-1、SHA-256 或 SHA-512 摘要,也可算老系统用的 MD4 与 MD2,中文按 UTF-8 字节计算。全部在本地完成。
MD5 反查
编码用常见密码表与数字、字母穷举反查 MD5 摘要,全部在本机完成、不上传、不查在线库,并如实说明覆盖范围。
CRC-32 校验
编码计算文本的 CRC-32 校验值,支持 IEEE、Castagnoli、Koopman 等六个常用变体,结果以十六进制或十进制输出,全部在本地完成。
Base64 编解码
编码把文本转成 Base64,或把 Base64 还原成文本,中文与 emoji 都按 UTF-8 正确处理。全部在浏览器本地完成,内容不上传。
URL 编解码
编码把中文、空格与符号转义成 %XX,或把 %XX 还原成文本;整条 URL 与单独的参数值要选对方式,选错不会报错,但链接会打不开。全部在浏览器本地完成。
HTML 实体编解码
编码把 < > & 与引号转成 HTML 实体,也能把实体还原成字符,而且只解一遍:&lt; 得到的是 < 而不是尖括号。全部在浏览器本地完成。