选择本地文件,在浏览器里计算 SHA-256 / SHA-1 / MD5,并与官方公布的校验值比对。文件不上传,断网也能用。
把文件拖到这里,或者
MD5 已被证明可在实际时间内构造碰撞,不得用于安全校验,仅用于兼容仍在发布 MD5 的历史校验清单。
尚未选择文件。
本工具在浏览器本地读取你选择的文件,用 SHA-256 / SHA-1 / MD5 计算校验值,并可与软件发布方公布的校验值逐字符比对,直接给出 MATCH 或 MISMATCH 的结论。
整个过程不涉及任何网络请求:页面源码里没有 fetch、XMLHttpRequest、WebSocket、sendBeacon 之类的调用,也没有表单提交目标,不引用任何外部脚本、样式或字体。全部逻辑都在这一个 HTML 文件里。
工具按分片读取文件(可选 1 / 4 / 16 MiB),内存占用只与分片大小有关,与文件本身大小无关,不会把整个文件读进内存。计算耗时取决于浏览器实现和你文件所在磁盘的速度。若文件达到数 GB,建议改用本工具所属开源仓库里附带的 Node 命令行版本,同样是流式读取。
这不是一句承诺,而是可以自己验证的技术事实:
本工具不做的事:不读取所选文件以外的本地数据;不使用 localStorage / IndexedDB;不记录、不上传、不在本地留下任何副本。
不会。本页源码里没有任何网络请求代码(没有 fetch、XMLHttpRequest、WebSocket、sendBeacon,也没有表单提交目标),也不引用外部脚本或样式。断网后打开本页仍然可以正常计算;在开发者工具的 Network 面板里清空记录后选择文件并计算,面板中不会出现新的请求。这几点都可以自己验证。
采用分片读取,默认每片 4 MiB,内存占用与文件大小无关,几十 GB 的文件也不会把内存撑爆。实际速度取决于设备与文件大小,页面会显示实时进度与总耗时,可据此自行判断;数 GB 的文件建议使用仓库附带的 Node 命令行工具,流式读取吞吐更高。
优先使用 SHA-256。MD5 已被证明可在实际时间内构造碰撞,因此不得用于判断文件是否被恶意替换等安全用途。保留它的唯一原因是:部分软件至今仍只公布 MD5 校验值,为了能与这类历史清单兼容。
先确认比较的是同一种算法——32 位十六进制是 MD5,40 位是 SHA-1,64 位是 SHA-256。若算法一致仍不同,通常意味着文件在下载或传输中被改动、下载不完整,或者你手上的校验值对应的并不是同一个版本。也可以勾选「独立实现交叉校验」,用浏览器原生 WebCrypto 再算一次,从而排除本页实现本身的问题。
有三种可能:一是期望值为空,所以没有比对;二是期望值长度不是 32、40 或 64 位十六进制,无法识别算法,此时会显示 INVALID;三是期望值对应的算法本次没有勾选,改勾上再计算即可。
当前版本一次处理一个文件,对应「一个下载包对一个官方校验值」这个最常见场景。批量校验已在计划中,尚未实现。