Windows下获取文件hash值的方法(certutil与Get-FileHash)

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

Windows下获取文件hash值的方法


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各版本均验证可用。