大家下载文件后,是否会有疑问,“下载的文件是否完整,是否会被人篡改了呢?”
尤其是你在一些中间网站下载的文件,比如:国内目前访问Github等网站时,可访问性和访问速度都是时好时坏,下载文件更是难上加难了。
这个时候大家可能会考虑使用一些中间网站提供的加速功能,当然也会使用加速功能尝试下载一些Github文件。
使用了中间网站,必然会存在下载文件被篡改的可能性,你会对文件的完整性和安全性产生怀疑。
那如何在Windows系统下方便地校验下载文件的完整性呢?以及判断文件是否被人篡改了呢? 下面先上解决方案。
解决方案
- checksum
你在一些网站下载文件时,可能会发现网站提供了你要现在文件的checksum值,也就是一串字符串,比如b9bf5a5d9307e190cdd12c05e6056ddbed54dce3a1b4fdb28e7d61683ac799aa
,这个字符串称为checksums,用于用户校验文件下载的完整性,判断是否被篡改。
目前checksum常用的SHA256 checksum,通过使用SHA256算法,对文件进行hash运算,得到的结果是256位的字符串,简单理解就是得到一个文件的数字“指纹”。
在中间网站下载Github文件时,先想办法访问官网,找到文件下载的checksum值,然后再在中间网站下载文件。 - PowerShell
下载完文件,并且已经知道官网提供的checksum值了,就需要使用工具进行校验了。推荐使用Windows自带的软件PowerShell,比较方便。
我使用的是Win10,如果你需要自己安装,可以参考 官网PowerShell安装教程
具体步骤
以下我会以从中间网站下载的Github开源Markdown软件MarkText为例,在Windows系统中,使用PowerShell验证文件的完整性和安全性。
1、进入下载文件所在的文件目录
2、打开PowerShell
在文件资源管理器的地址栏输入powershell
,然后回车即可快速便捷地在当前路径下打开PowerShell。
3、使用certutil工具命令计算已下载文件的sha256值
在PowerShell终端中,输入下面的命令:
certutil -hashfile .\marktext-setup.exe sha256
成功执行后,终端显示返回结果为:
`SHA256 的 .\marktext-setup.exe 哈希:
b9bf5a5d9307e190cdd12c05e6056ddbed54dce3a1b4fdb28e7d61683ac799aa
CertUtil: -hashfile 命令成功完成。
到此得到当前目录下文件marktext-setup.exe
的sha256值,这里借助了Win10系统自带安装好的工具命令certutil
,不需要自己安装。
certutil详细的使用教程,可参考官网certutil使用详细介绍。
4、使用-eq
比第3步得到的值和Github官网给出的checksum值
在MarkText的Github Release中可以找到对应下载文件的checksum值。
执行
-eq
命令,可以校验官网checksum值和在步骤3中生成的sha256值是否相等,具体命令如下:
"b9bf5a5d9307e190cdd12c05e6056ddbed54dce3a1b4fdb28e7d61683ac799aa" -eq "b9bf5a5d9307e190cdd12c05e6056ddbed54dce3a1b4fdb28e7d61683ac799aa"
命令执行返回结果为True。
如果相等会返回True,表明下载文件是官网的文件。
否则返回False,说明文件不完整或者被篡改过,就需要特别注意了,建议别使用该文件。
完整命令执行过程如下图:
总结
当从网站下载文件时,尤其是要打开使用的文件,比如exe
文件,如果网站提供了checksum值,建议使用本文介绍的方法,做一下校验,可以保证文件的完整性和相对安全性,平时也注意保护自己的信息和数据安全。