很多网站在提供资源下载时也会提供相应的hash码,是为了防止用户下载到不完整或者被篡改的文件。用户应该在下载后及时的验证文件的hash,来保证下载资源的安全性和完整性。
利用Windows命令可以快速的完成这项任务。
使用"certutil"命令工具
certutil -hashfile .\test.txt SHA256
用上面这行命令来获得当前目录下测试文件test.txt的hash,其对应的算法为SHA256(其他常见的hash算法还有sha-1, sha-2和md5等,用不同的算法可以得到相应的hash码)。
得到的hash码为:
"2e08d1f6000aef541797d008c05ac36f4dbebfb36cbac5615788e6fcc5b300a7"
获取的这个hash码是不区分大小写的,也就是说上面的hash码等同于下面的:
"2E08D1F6000AEF541797D008C05AC36F4DBEBFB36CBAC5615788E6FCC5B300A7"
使用"Get-FileHash"命令工具
Get-FileHash .\test.txt -Algorithm SHA256
这个命令也可以得到同样的hash码。
将获取的hash码与资源网站上提供的hash码做对比。一般情况下不用每一位都进行比对,因为即使文件中有微小差异,生成的hash码也会完全不同。
将获取的hash码做比对
(Get-FileHash .\test.txt -Algorithm SHA256).hash -eq "2E08D1F6000AEF541797D008C05AC36F4DBEBFB36CBAC5615788E6FCC5B300A7"
上面的代码将Get-FileHash命令获取的hash码进行比对,如果相同返回True。
参考资料:
Win10 中使用自带的 get-filehash 命令实现文件校验-优快云博客
Windows(Win10)自带的可用于文件校验(Hash校验,SHA256校验,MD5校验等)的命令: CertUtil 和 Get-FileHash_sha256校验工具-优快云博客
How to verify SHA-256 checksum? : Rublon Help
How can I compare a file's SHA256 hash in PowerShell to a known value? - Stack Overflow