哈希对比校验
比对文本哈希与给定值是否一致,验证下载文件
—
哈希对比校验的正确做法
为什么需要专门的对比工具
校验文件完整性的流程是:从发布方拿到一个哈希值,在本地对文件算出哈希,然后比对两者。听起来只是"看一眼是否相同",但实际操作里有几处很容易出错:
- 大小写不一致。同一个哈希有十六进制大写和小写两种写法,
A3F1...和a3f1...表示同一个值。肉眼比对时很容易因为大小写差异误判为不一致。正确的做法是统一转成小写再比。 - 隐藏的空白字符。哈希值常从网页上复制,末尾会带上空格、换行或不可见的零宽字符。这些字符不会影响"看起来一样",但会让字符串比较失败。
- 粘贴时只复制了一部分。SHA-256 是 64 个字符,很长,漏掉中间一段很难发现。
- 混用了不同算法。MD5 是 32 字符,SHA-1 是 40,SHA-256 是 64,SHA-512 是 128。长度不一致就说明根本不是一个算法,不用再往下比。
正确流程
- 先比长度。长度不同直接判定不一致,也顺便能反推算法(32→MD5,40→SHA-1,64→SHA-256,128→SHA-512)。
- 统一大小写并去掉首尾空白。
- 逐字符比对,一旦出现差异就定位到具体位置——如果差异只在某一段,可能是复制截断;如果整体都不同,多半是文件本身不对或算法不同。
- 确认算法一致。发布方给的如果是 SHA-256,你不能用 MD5 去算然后比。
它防得住什么,防不住什么
校验哈希能确认的是:你手上的文件和发布方当时算哈希的那个文件是同一份,或者至少内容一致。它能发现下载过程中的传输损坏、CDN 缓存了旧版本、以及无意中拿错文件。
它防不住的是:有人同时替换了文件和页面上的哈希值。如果攻击者能改你的下载源,他也能改那个哈希。要防这一层,需要把哈希放在他改不到的地方——HTTPS 站点(前提是证书未被攻破)、官方签名过的发布渠道,或者用数字签名让哈希本身可验证。
还有一点:MD5 和 SHA-1 的哈希不能用来证明"文件没被人改过",因为两者的碰撞攻击都已实际可行。它们只适合做意外的损坏检测。
工具怎么用
把两个哈希值分别粘进输入框,工具会在忽略大小写和首尾空白后比对,并明确指出是否一致、长度是否相同。也支持粘贴"哈希值 文件名"这种校验文件格式(如 sha256sum 输出的内容),会自动提取其中的哈希部分。全部在本地计算,不上传任何内容。
常见问题
这个和"文件 hash 计算"有什么不同?
这里校验的是粘贴进来的文本内容;如果要校验下载的安装包,请用文件类工具直接拖入文件计算。