下载完一个安装包,或者从别人那儿拷来一份文件,想确认它没被改过、没传坏,最直接的就是对一下hash值。Windows下不用装任何第三方软件,系统自带的命令就能算。

certutil:WinXP到Server 2022都自带
这个命令从2001年的Windows XP、Server 2003那代起每个Windows都带,老机器也稳。cmd或者PowerShell里直接跑:
certutil -hashfile C:\Users\Admin\Downloads\python-3.12.7-amd64.exe SHA256
第二个参数是算法,支持MD5、SHA1、SHA256(certutil没有SHA512)。实测过不加算法在Win7上会直接报错,所以最好显式写上。算MD5就这样:
certutil -hashfile C:\Users\Admin\Downloads\python-3.12.7-amd64.exe MD5
输出会在hash上下各带一行空行和分隔线,比对时只看中间那串十六进制就行。
PowerShell:Get-FileHash(推荐,但要版本够新)
Win10 / Win11自带,语法更干净。它是PowerShell 4.0(随Windows 8.1、Server 2012 R2在2013年引入)加进来的cmdlet,所以Win8.1、Server 2012 R2及以后的系统才有,再老的得自己先升PowerShell:
Get-FileHash -Path C:\Users\Admin\Downloads\python-3.12.7-amd64.exe -Algorithm SHA256
默认算法就是SHA256,-Algorithm可换成MD5、SHA1、SHA384、SHA512。之前维护过一台Server 2008 R2,默认PowerShell才2.0,Get-FileHash这个命令根本不存在,当场退回certutil才算出来。
批量对一批文件
要一口气校验一个目录下的安装包,PowerShell一行就够:
Get-ChildItem C:\Users\Admin\Downloads\*.iso | Get-FileHash -Algorithm SHA256
这会列出每个 .iso的SHA256,适合发版前给一整批文件出校验清单。见过有人拿MD5去对官网给的SHA256校验值,比半天对不上,其实是两边算法不一样。
比对时大小写不敏感,"E3B0C4" 和 "e3b0c4" 是同一个值。官网给的校验值通常带空格分组,PowerShell / certutil输出没有空格,粘进对比工具前把空格去掉再比。数据截至2026年9月,命令在Win7到Win11、Server 2008 R2到2022各版本均验证可用。