免费工具

文件校验和

被掉包的文件看上去和真的一样:同样的文件名、同样的大小、同样的图标。唯一能分辨它们的就是校验和——内容的一段简短指纹。把文件拖进来,和作者公布的那一串比一比:对得上,就是这个文件;对不上,就是另一个文件。

在浏览器里计算:文件不会上传到任何地方。

把文件拖到这里 或者

文件在标签页的内存里读取。默认算 SHA-256;SHA-1 和 SHA-512 在结果旁边的按钮里。

怎么校验我们的应用

网站上每一个下载旁边都放着一个装有基准校验和的文件: 404vpn.apk.sha256, tunnel.apk.sha256404vpn-macos.dmg.sha256。打开你要的那个,把里面的字符串复制到上面的输入框,再把下载好的文件拖进来——页面会直接告诉你对上了没有。

这同时也回答了“我是不是被塞了一个假的 APK”。Android 不会显示我们的文件和别人同名文件之间有什么区别,校验和会。

一点限制

校验和是按整个文件算的,为此整个文件都要进到标签页的内存里。几百兆浏览器扛得住,几十 GB 的镜像就不行了。这种文件用命令行更稳妥: shasum -a 256 文件 用于 macOS 和 Linux, certutil -hashfile 文件 SHA256 用于 Windows。

下载了我们的应用?

比对一下校验和,确认你手上的确实是我们的文件,而不是别人同名的重打包版本。

404 VPN 下载 →

常见问题

guest@404vpn:~$ cat file-hash-faq.md
[01] $ 文件是从官网下的,还要比对校验和吗?
> 要,因为网站和你的硬盘之间还有一段路:被感染的路由器、往页面里插广告的运营商、公共 Wi-Fi,或者一个“下载更快”的镜像,都可能把文件换掉。HTTPS 能防住很多情况,但防不住你以为是同一个地址、其实是从另一个地址下载的。校验和给的答案没有歧义。
[02] $ 哪一串才是对的,从哪里拿?
> 从文件的作者那里拿。我们每一个下载旁边都放着一个 .sha256 后缀的文件,基准值就在里面。要紧的是:基准值必须来自你信任的来源,而不是来自你拿到可疑文件的同一个地方。否则文件和旁边的校验和可以一起被伪造。
[03] $ 校验和对不上——这说明什么?
> 说明这不是那个文件。原因也可能无害:下的是另一个版本、下载中断文件不完整、压缩包被重新打包过。但判断要反过来:在校验和对上之前,就把它当作来路不明的文件,别运行。
[04] $ 为什么用 SHA-256 而不是 MD5?
> MD5 早就被攻破了:今天在一台普通电脑上,几分钟就能凑出另一个校验和相同的文件,伪造品正是这样塞进来的。它已经不能用来验证真伪。SHA-1 稍好一点,但同样被认为不合格;我们提供它,只是为了那些从来没公布过别的校验和的老文件。
[05] $ 文件真的不会发到你们那里吗?
> 真的:页面在标签页的内存里读取它,用浏览器内置的 WebCrypto 计算校验和。整个过程不发生任何网络请求——在开发者工具的“网络”标签里就能看到。为了检查文件有没有被掉包,反倒把它传到别人的服务器上,那是个奇怪的主意。