MD5 和 SHA-256 哈希值校验工具

计算任意文件的 MD5、SHA-256、SHA-1 和 SHA-512 哈希值,并与下载页面上的校验值比对。粘贴预期的校验值,马上就能知道是否一致。文件在浏览器中读取,不会被上传,因此任何大小的文件都能校验。

最后更新:

自动识别 MD5、SHA-1、SHA-256 和 SHA-512。

什么是校验值?

校验值(也叫哈希值)是根据文件的每一个字节计算出来的一串简短的字母和数字。同一个文件总是得到相同的校验值,哪怕只改动一个字节,结果也会完全不同。因此,它就像是文件内容的指纹。

软件发布方会在下载链接旁边列出校验值。如果你算出的下载文件校验值与他们的一致,就说明你拿到的正是他们发布的文件,而不是损坏或被篡改的副本。

为什么要校验下载的文件

  • 下载损坏:网络中断或硬盘故障都可能悄无声息地损坏大文件,不会有任何错误提示。损坏的 ISO 镜像往往在安装到一半时才失败,而那时你早就忘了它是从哪里下载的。
  • 文件被篡改:攻击者入侵下载镜像站后,可以把文件替换成植入了恶意软件的版本。2016 年,Linux Mint 官网就曾遭到入侵,下载链接被指向一个带有后门的 ISO。
  • 下错了文件:核对校验值还能发现版本搞混的情况,比如本想下载 x64 版却下成了 ARM 版,或者从缓存里拿到了旧版本。

如何在线校验文件哈希值

  1. 把下载的文件拖放到上方工具中,或点击选择文件。
  2. 从下载页面复制校验值,粘贴到预期校验值输入框中。
  3. 工具会告诉你是否一致。它会根据校验值的长度自动识别 MD5、SHA-1、SHA-256 和 SHA-512。

你也可以直接粘贴校验值文件中的一整行,比如 9f86d0...0a08 *ubuntu.iso,工具会自动提取其中的校验值。

为什么私密文件也能放心使用

大多数在线哈希计算器会先把你的文件上传到它们的服务器。本工具利用浏览器自身的计算能力分块读取文件,文件不会离开你的设备。这也意味着无需等待上传,超大文件也能处理。

如何在 Windows 上校验 MD5 或 SHA-256 哈希值

Windows 的 PowerShell 内置了校验工具。打开 PowerShell(可在开始菜单中搜索),进入文件所在的文件夹,然后运行:

cd $HOME\Downloads
Get-FileHash .\ubuntu.iso

默认会输出 SHA-256 校验值。如需其他算法,可加上 -Algorithm MD5、-Algorithm SHA1 或 -Algorithm SHA512。如果不想逐个字符地核对,可以运行以下命令直接比对预期校验值:

(Get-FileHash .\ubuntu.iso).Hash -eq "在此粘贴预期的校验值"

如果一致,PowerShell 会输出 True,否则输出 False。在旧版命令提示符中,可以改用 certutil -hashfile ubuntu.iso SHA256。

如何在 Mac 上校验 MD5 或 SHA-256 哈希值

打开“终端”(位于“应用程序”>“实用工具”),进入文件所在的文件夹,然后运行:

cd ~/Downloads
shasum -a 256 app.dmg

把 256 换成 1 或 512 即可计算 SHA-1 或 SHA-512。计算 MD5 请运行 md5 app.dmg。如果想让终端帮你比对校验值,可以运行:

echo "在此粘贴预期的校验值  app.dmg" | shasum -a 256 -c

一致时会输出 app.dmg: OK。注意校验值和文件名之间要有两个空格。

如何在 Linux 上校验 MD5 或 SHA-256 哈希值

主流 Linux 发行版都自带校验工具。在终端中运行:

sha256sum ubuntu.iso

md5sum、sha1sum 和 sha512sum 的用法相同。许多项目会发布一个列出所有下载文件校验值的文件,通常叫 SHA256SUMS。把它和你的文件放在同一个文件夹中,然后运行:

sha256sum -c SHA256SUMS --ignore-missing

每个校验一致的文件都会输出 ubuntu.iso: OK。--ignore-missing 会跳过列表中你没有下载的文件。

MD5、SHA-1、SHA-256 与 SHA-512 对比

这四种算法的作用相同,但 MD5 和 SHA-1 已经无法防范有人刻意伪造文件。不过它们仍能发现意外损坏,所以很多下载页面还在列出它们。

校验算法对比
算法长度安全性用途
MD5长度32 个字符安全性已被攻破,可以构造出校验值相同的两个不同文件用途检查下载是否损坏或不完整
SHA-1长度40 个字符安全性出于同样原因,自 2017 年起已被攻破用途较旧的下载页面和 Git
SHA-256长度64 个字符安全性安全用途当今软件下载的标准
SHA-512长度128 个字符安全性安全用途部分 Linux 发行版和安全工具

如果下载页面提供了多种校验值,请使用 SHA-256 或 SHA-512。

校验值不一致时该怎么办

先不要打开或安装该文件,然后按可能性从高到低依次排查:

  • 确认你比较的是同一种算法。SHA-256 校验值永远不会与 MD5 校验值一致。
  • 确认你下载的正是该校验值对应的版本,包括版本号以及是 x64 还是 ARM。
  • 删除文件并重新下载,最好从官网下载,而不是镜像站。
  • 如果从官网重新下载后仍然不一致,请联系发布方,并且不要使用该文件。

校验值无法告诉你的事

校验值一致,只能证明你的文件与生成该校验值的文件完全相同,并不能证明这个文件是安全的。如果攻击者控制了网站,他们可以同时替换下载文件和旁边的校验值。

为了更可靠,请从与文件不同的地方获取校验值,比如从镜像站下载时,到官网核对校验值。有些项目还会用 GPG 对校验值文件签名,这能证明校验值确实来自发布方。

常见问题

不会。文件读取和校验值计算都在你自己设备上的浏览器中完成。页面加载完成后,即使断开网络,工具也能照常使用。

没有。文件是分块读取的,而不是一次性全部读入,所以几 GB 的 ISO 镜像也没问题。所需时间取决于你设备的性能。

不区分。校验值是十六进制数,所以“A1B2”和“a1b2”是同一个值。Windows 显示的校验值是大写,而大多数其他工具使用小写。本工具会忽略这种差异。

不会。校验值只根据文件内容计算,文件名、所在文件夹和修改日期都不影响它。

理论上可能,因为可能存在的文件数量多于校验值的数量。但对于 SHA-256,至今没有人找到过这样的两个文件,而要找到它们所需的计算能力远超现有的总和。至于 MD5 和 SHA-1,研究人员可以刻意构造出校验值相同的文件,所以不能用它们来防范篡改。

用下载页面提供的那种,因为只有同类才能比较。如果可以选择,就选 SHA-256。本工具会同时计算全部四种,所以不需要事先选择。

私密地分享文件

用端到端加密链接发送文件。免费、无需注册,我们也看不到你发送的内容。

分享文件