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

mac*_*mac 3 powershell hash sha

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

mac*_*mac 10

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

计算文件的哈希值:

Get-FileHash .\path\to\foo.zip
Run Code Online (Sandbox Code Playgroud)

产生类似的东西:

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
SHA256          15DC0502666851226F1D9C0FE352CCAF0FFDEFF2350B6D2D08A90FCD1F610A10       C:\Users\me\path\to\foo.zip
Run Code Online (Sandbox Code Playgroud)

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

(Get-FileHash .\path\to\foo.zip).Hash -eq "15dc0502666851226f1d9c0fe352ccaf0ffdeff2350b6d2d08a90fcd1f610a10"
Run Code Online (Sandbox Code Playgroud)
True
Run Code Online (Sandbox Code Playgroud)

或者如果您在文件中获得了预期的哈希值,请说 expected-hash.sha256

(Get-FileHash '.\path\to\foo.zip').Hash -eq (Get-Content .\expected-hash.sha256)
Run Code Online (Sandbox Code Playgroud)
True
Run Code Online (Sandbox Code Playgroud)

  • @Olaf ...因为它是[鼓励](https://meta.stackexchange.com/questions/17845/etiquette-for-answering-your-own-question)? (6认同)
  • 当你实际上已经知道答案时,为什么还要问一个问题?如果您想与世界分享您的想法,您可以创建一个博客。;-) (3认同)
  • “方便地,此比较似乎不区分大小写” - 是的,“-eq”执行不区分大小写的比较。如果您想要区分大小写的比较,可以使用“-ceq” (3认同)
  • 虽然不是很长,但我确实从几个来源综合了一些信息,得到了一条有效的俏皮话,我认为这是值得分享的。 (2认同)