文件哈希计算|用MD5・SHA-1・SHA-256・SHA-512验证下载文件是否被篡改
拖放文件即可一次性计算MD5・SHA-1・SHA-256・SHA-512哈希值。与发布方公开的校验值比对,确认下载的文件未损坏或被篡改。文件不会上传到服务器。
哈希算法对照表
| 算法 | 输出位数 | 十六进制字符数 | 主要用途 |
|---|---|---|---|
| MD5 | 128位 | 32个字符 | 仅适合轻量级完整性检查。密码学安全性已被攻破,不可用于密码存储或数字签名 |
| SHA1 | 160位 | 40个字符 | 比MD5更安全,但碰撞攻击已被证实。仍用于Git提交哈希等非安全场景 |
| SHA256 | 256位 | 64个字符 | 目前仍被认为安全,是验证软件下载完整性最常用的标准算法 |
| SHA512 | 512位 | 128个字符 | 输出比SHA-256更长,在64位CPU上有时计算速度更快 |
什么是文件哈希
哈希值是根据文件全部内容计算出的定长字符串,相当于该文件的"指纹"。哪怕只有1个字节不同,计算出的值也会完全不同,因此只需与发布方公开的值比对,就能确认下载的文件是否损坏或被篡改。本工具只需放入文件,即可一次性计算MD5・SHA-1・SHA-256・SHA-512。
计算全部在浏览器内完成,文件内容不会被发送到外部。不过由于需要将整个文件读入内存,数GB规模的大文件可能计算缓慢甚至失败。另外MD5和SHA-1已被证实存在碰撞攻击,不适合用于检测恶意篡改。
文件哈希验证步骤
- 放入文件 将要确认的文件拖入框内,或点击选择。较大的文件请在计算完成前不要关闭标签页。
- 查看哈希值 四种算法的结果会并排显示。请查看发布方所使用算法对应的值。
- 与公开值比对 在比对栏粘贴官方网站公开的哈希值,即可自动判定与哪种算法一致。
- 不一致时不要使用 请先确认是否复制有误,若仍不一致,请不要运行该文件,删除后从官方网站重新获取。
用好本工具的小技巧
- 如果发布方没有说明使用了哪种算法,只需将哈希值粘贴到比对栏,即可自动判断匹配的算法。
- 较大的文件(数百MB以上)会占用较多浏览器内存,计算可能需要几秒到一分钟,请保持标签页打开。
- ISO镜像、安装程序等一旦被篡改危害较大的文件,建议养成核对哈希值的习惯。
- MD5・SHA-1已被证实存在碰撞攻击,不适合用于检测恶意篡改。对安全性要求高的场景请使用SHA-256及以上算法。
文件哈希验证的应用场景
验证ISO镜像和安装程序
操作系统镜像和可执行文件一旦被篡改危害极大。执行前养成与官方哈希值比对的习惯。
确认大容量文件传输是否出错
可以确认在网络不稳定环境下接收的文件是否缺失内容,比单纯查看文件大小更可靠。
确认备份与原始文件一致
将复制或移动后的文件哈希值与原始文件比对,即可验证内容是否完全一致。
判别重复文件
即使文件名不同,只要哈希值相同,内容就是一致的,可作为整理文件的依据。
哈希相关术语
- 哈希值
- 根据数据计算出的定长字符串。相同的输入总是得到相同的值。
- 校验值
- 为确认文件是否损坏而公开的值。哈希值被广泛用于此用途。
- 碰撞
- 两个不同的数据得到相同哈希值的状态。MD5和SHA-1已被证实可以被人为构造出来。
- 雪崩效应
- 输入仅发生极微小变化,输出就会完全不同的性质。这是能够检测出极小损坏的依据。
- SHA-256
- 生成256位长度哈希值的算法,目前是下载验证中最广泛使用的标准。
常见问题
闲话 ― 为什么官方网站要公开哈希值
您可能在软件网站的下载链接旁见过类似"SHA256: a1b2c3..."的哈希值。这是为了让用户能够自行验证:这个文件确实是发布者创建的原始文件,在传输过程中未损坏,也未在镜像服务器上被篡改。
这一点在Linux发行版的ISO镜像分发中尤为重要,因为用户通常通过分布在世界各地的镜像服务器下载。除了普通的传输错误外,理论上还存在恶意攻击者入侵镜像服务器、分发含有恶意软件的篡改版本的风险。如果官方网站公开了经过签名的哈希值列表(通常附有GPG签名),用户无论从哪个镜像下载,只需在本地计算哈希值并比对,就能验证安全性。
哈希函数具有"雪崩效应":即使输入只改变一个比特,输出也会截然不同。这使得无论是蓄意篡改还是下载过程中的细微损坏,都能被可靠地检测出来。即使两个文件大小相同,只要有一个字节不同,哈希值就会完全不同,因此比单纯核对文件大小可靠得多。