如果我已经下载了一个已知SHA256哈希值的文件,我应该如何使用PowerShell检查文件是否与预期的哈希值匹配?
如果我已经下载了一个已知SHA256哈希值的文件,我应该如何使用PowerShell检查文件是否与预期的哈希值匹配?
Get-FileHash
命令为文件计算散列值,其默认的哈希算法是SHA256。
要计算文件的哈希值:
Get-FileHash .\path\to\foo.zip
这会产生类似于:
Algorithm Hash Path
--------- ---- ----
SHA256 15DC0502666851226F1D9C0FE352CCAF0FFDEFF2350B6D2D08A90FCD1F610A10 C:\Users\me\path\to\foo.zip
要进行比较,从Get-FileHash的输出中仅提取计算出的哈希值,然后将其作为(带引号的)字符串文字与期望值进行比较。方便的是,这种比较似乎不区分大小写。
(Get-FileHash .\path\to\foo.zip).Hash -eq "15dc0502666851226f1d9c0fe352ccaf0ffdeff2350b6d2d08a90fcd1f610a10"
True
如果您已经在文件中拥有了期望的哈希值,比如 expected-hash.sha256
文件
(Get-FileHash '.\path\to\foo.zip').Hash -eq (Get-Content .\expected-hash.sha256)
True
这样怎么样:
Compare-Object -ReferenceObject (Get-Content -Path <path/to/hash-file>) -DifferenceObject (Get-FileHash <path/to/test-file> -Algorithm SHA512)
在这里,<path/to/hash-file> 应该被替换为包含预期哈希的文件路径,而 <path/to/test-file> 应该被替换为用于测试哈希的文件路径。