如何将 PowerShell 中文件的 SHA256 哈希与已知值进行比较?



如果我下载了一个具有已知SHA256哈希的文件,我如何使用PowerShell检查该文件是否与预期的哈希匹配?

Get-FileHashcmdlet计算文件的哈希,SHA256是其默认哈希算法。

计算文件的哈希:

Get-FileHash .pathtofoo.zip

这会产生类似于:

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
SHA256          15DC0502666851226F1D9C0FE352CCAF0FFDEFF2350B6D2D08A90FCD1F610A10       C:Usersmepathtofoo.zip

要与已知值进行比较,请从Get-FileHash的输出中单独提取计算出的哈希值,然后将其作为(带引号的(字符串文字与预期值进行比较。方便的是,这种比较似乎是不区分大小写的

(Get-FileHash .pathtofoo.zip).Hash -eq "15dc0502666851226f1d9c0fe352ccaf0ffdeff2350b6d2d08a90fcd1f610a10"
True

或者,如果你在一个文件中得到了预期的散列,比如expected-hash.sha256

(Get-FileHash '.pathtofoo.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)

其中<路径/to/hash文件>应替换为包含预期哈希的文件的路径,并且<路径/to/test文件>应该替换为哈希所依据的文件。

最新更新