什么是校验值?
校验值(也叫哈希值)是根据文件的每一个字节计算出来的一串简短的字母和数字。同一个文件总是得到相同的校验值,哪怕只改动一个字节,结果也会完全不同。因此,它就像是文件内容的指纹。
软件发布方会在下载链接旁边列出校验值。如果你算出的下载文件校验值与他们的一致,就说明你拿到的正是他们发布的文件,而不是损坏或被篡改的副本。
为什么要校验下载的文件
- 下载损坏:网络中断或硬盘故障都可能悄无声息地损坏大文件,不会有任何错误提示。损坏的 ISO 镜像往往在安装到一半时才失败,而那时你早就忘了它是从哪里下载的。
- 文件被篡改:攻击者入侵下载镜像站后,可以把文件替换成植入了恶意软件的版本。2016 年,Linux Mint 官网就曾遭到入侵,下载链接被指向一个带有后门的 ISO。
- 下错了文件:核对校验值还能发现版本搞混的情况,比如本想下载 x64 版却下成了 ARM 版,或者从缓存里拿到了旧版本。
如何在线校验文件哈希值
- 把下载的文件拖放到上方工具中,或点击选择文件。
- 从下载页面复制校验值,粘贴到预期校验值输入框中。
- 工具会告诉你是否一致。它会根据校验值的长度自动识别 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.isomd5sum、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 对校验值文件签名,这能证明校验值确实来自发布方。
常见问题
私密地分享文件
用端到端加密链接发送文件。免费、无需注册,我们也看不到你发送的内容。
分享文件