ZeroTool Workbench

文件哈希校验

在浏览器中计算本地文件的 SHA-256、SHA-1、SHA-384、SHA-512、MD5 校验和,不上传文件即可验证下载完整性,并支持与期望哈希值比对。

100% 浏览器端运行 数据不离开你的设备 免费 · 无需注册

Drop a file, or click to choose

Any file · best up to ~1 GB · hashed in your browser

Algorithms

100% client-side — the file never leaves your browser

使用方式

  1. 把文件拖入上传区,或点击选择本地文件。
  2. 默认勾选 SHA-256;如需 SHA-1 / SHA-384 / SHA-512 / MD5 同步计算,逐项勾选即可。
  3. 点击「计算哈希」,每种算法的结果会单独成行,附带复制按钮。
  4. 验证下载完整性时,把发布方公布的期望哈希粘贴到下方输入框。工具会忽略大小写自动比对,并提示与哪一行匹配。

典型场景

  • 下载校验 — 验证 ISO、安装包、release 归档与项目公布的 SHA-256 一致。
  • 构建产物完整性 — 检查 CI 产物、S3 对象、企业代理传输过的二进制是否被改动。
  • 跨机器文件比对 — 快速判断两份二进制是否逐字节相同。
  • 兼容旧版校验 — 部分发行版仍同时发布 MD5 / SHA-1,本工具一次性给出全部摘要。

哈希是怎么算的

全部在本地完成。文件通过 File.arrayBuffer() 一次性读入 ArrayBuffer, SHA-1 / SHA-256 / SHA-384 / SHA-512 通过 crypto.subtle.digest() 走浏览器原生加密 模块,通常带硬件加速。MD5 没有被 Web Crypto 实现,所以由页面内嵌的 public domain MD5 例程对 同一段字节数据计算。最终的十六进制摘要直接渲染到结果行,不会发送到任何服务器。

SHA-256 与旧算法的取舍

SHA-256 之所以作为默认,是因为它属于 SHA-2 家族,目前没有已知的实用碰撞攻击,并且现代工具链 (rustup、cargo、npm、Docker Registry、GitHub Releases、Linux 软件镜像)也都以 SHA-256 作为 公布标准。SHA-1 早在 2017 年的 SHAttered 攻击中被证明可碰撞;MD5 的碰撞构造更是早就工程化。 如果发布方只给了 MD5 / SHA-1,把它们当作「文件是否下载完整」的提示即可,不要当作真伪证明。

设计边界

本工具按设计只做单文件一次性哈希计算。不支持分块流式哈希、不会校验签名、不会触碰 GPG / PGP 密钥、也不会连接任何服务。超大归档请用 sha256sum(Linux)/ shasum -a 256(macOS)/ certutil -hashfile(Windows)。 需要真伪验证请用 gpg —verifycosign verify 配合发布方的签名密钥。

FAQ

支持哪些哈希算法?

SHA-1、SHA-256、SHA-384、SHA-512 通过浏览器内置 Web Crypto API 计算;MD5 使用页面内嵌的 public domain JavaScript 实现。默认勾选 SHA-256,也是新流程推荐的算法。

MD5 和 SHA-1 还能用于安全校验吗?

不能用于密码学意义上的安全性。两者都已被证明可构造碰撞攻击。但作为旧版完整性校验仍有意义——许多软件发布方仍同时提供 MD5 / SHA-1,把它们当作「文件是否下载完整」的提示就好,不要当作真伪证明。新流程优先选 SHA-256。

文件会被上传到任何地方吗?

不会。文件通过 ArrayBuffer 读入浏览器后在本地计算:SHA 系列走 Web Crypto 由浏览器原生模块执行,MD5 走本页内嵌的 JavaScript 实现。整个过程不离开当前标签页,构建产物、签名包、机密下载都可放心使用。

文件大小限制是多少?

按设计推荐处理 1 GB 以内的文件。浏览器对单个 ArrayBuffer 分配上限约为 2 GB,超过会受设备内存影响。TB 级归档请用命令行:Linux 用 sha256sum,macOS 用 shasum -a 256,Windows 用 certutil -hashfile <file> SHA256。

为什么 MD5 在大文件上明显更慢?

SHA-1/256/384/512 由浏览器原生加密模块执行,通常带硬件加速;MD5 在本工具中由纯 JavaScript 计算,因为 Web Crypto 并未实现 MD5。文件超过约 100 MB 后差距会非常明显。如果只需一种算法,建议直接用 SHA-256。