下载到了一个压缩包,名字、大小看着都对,就能放心运行了吗?如果它经过转发或镜像,更值得多问一句:手里的文件,与项目发布的那份到底是不是同样的内容?
SHA256 校验可以帮你做这一步。下面只讲下载完成后的核对,不再介绍选哪个客户端、怎样加速下载,也不把“校验一致”当成软件绝对安全的证明。
先找比较对象,不是先找校验工具
哈希值可以理解成根据文件内容算出的一串摘要。你自己算出一串数字,还没有完成核对;需要再拿到一份可信的参考值。
从项目自己确认的仓库或官网进入目标版本的发布页,找文件旁的 SHA256、digest,或者发布者提供的校验清单。核对文件名、版本、平台及架构。Windows 的安装包、便携压缩包,甚至同版本的不同架构,都不能混着比。
GitHub 的官方说明介绍了上传发布资产的 SHA256 摘要,可在 Releases 文件旁或接口中取得。不要把这理解为每一个历史附件、自动生成的源码包或站外下载,都一定有可直接使用的摘要;以目标文件实际提供的信息为准。
参考值尽量从原项目取得。如果安装包和校验值都只来自同一个陌生转发站,两者即使一致,也没有解决来源可信的问题。别人可以同时换掉文件和旁边那串数字。
在 PowerShell 里读文件,不用运行安装包
先等下载完成,再打开 PowerShell。计算哈希不需要给安装器管理员权限,也不必把文件上传到所谓“在线校验站”。将下例路径换成你电脑上的实际文件:
Get-FileHash -LiteralPath 'C:\Downloads\example.zip' -Algorithm SHA256 | Format-List
这里的路径只是示例,不是让你另外创建一个同名文件。可以在资源管理器中找到下载文件,复制其完整路径,再填入单引号之间。若路径本身含单引号,需要在 PowerShell 单引号字符串里写成两个单引号。
微软的命令文档列出了 -LiteralPath:它按字面处理路径,不把方括号等字符当通配符。命令输出中看 Algorithm 是否为 SHA256,再比较 Hash 的完整内容;不要只看开头和末尾几位。
参考值若写成 sha256:一串数字,比较时取冒号后面的摘要,不把前缀算进去。十六进制字母的大小写不影响这个比较;但漏字、夹空格或拿错一行,需要先处理。
用 True 或 False 避免看花眼
下面两行只读取文件并比较字符串,不安装、不解压,也不修改网络设置。先改实际路径,再把引号内的提示文字换成可信发布页对应的完整 SHA256:
$actual = (Get-FileHash -LiteralPath 'C:\Downloads\example.zip' -Algorithm SHA256).Hash
$actual -eq '在这里粘贴对应文件的完整SHA256'
返回 True 才表示本次两串值相等。出现文件不存在、访问拒绝等错误时,先修正路径或读取条件,不能把报错后的比较结果当作正常校验结论。也不用为解决读取问题关闭安全软件。
2026 年 10 月 27 日,本站在 Windows、PowerShell 7.6.5 中复核了三个受控文本文件:两份内容相同、名字不同;第三份只把其中一个小写字母改成大写。使用上面的 SHA256 读取方式,前两份摘要相同,第三份不同;对应比较分别返回 True 和 False。
这只验证命令与内容比较的行为,不是对某款安装包的安全测评。文本中的换行、编码也属于文件内容,不能把屏幕上“看起来一样”直接当作字节完全相同。
不一致时,先停下来核对这几件事
不要继续运行文件,也别反过来修改参考值让结果变成 True。按顺序看:
- 是否选了同一版本、同一平台和同一种文件,而不是拿 ZIP 对安装包。
- 是否计算了原始下载文件,而不是解压后的程序、浏览器另存的网页或尚未完成的下载。
- 参考值是否对应这一行文件,复制是否完整。
- 从已确认的原发布入口重新下载,再核对一次。
不一致证明本次内容没有匹配参考值,却不能仅凭这一点确定“镜像投毒”“代理篡改”或是哪一步出了错。仍不一致时,保留版本、文件名和双方摘要,通过项目正式渠道询问;求助截图遮住个人目录和下载地址里的令牌。
一致之后,还不能省掉来源判断
校验一致,解决的是与参考内容是否匹配,不是开发者是谁、代码有没有漏洞、运行后会申请什么权限。项目本身若不可信,把它的原包完整下载下来也不会自动变安全。
没有可信参考值时,可以记录本地摘要供日后比较,但不能宣布“通过官方校验”。回到项目来源、签名或其提供的其他验证方式继续判断,而不是找一个同名文件来互相作证。
已有的客户端下载与选包说明负责确认平台、架构和入口;这一篇接着检查下载所得的内容。两步目的不同,都不应靠关闭安全警告来代替。