【问题标题】:How can I compare a file's SHA256 hash in PowerShell to a known value?如何将 powershell 中文件的 SHA256 哈希值与已知值进行比较?
【发布时间】:2020-12-03 09:19:30
【问题描述】:

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

【问题讨论】:

    标签: powershell hash sha


    【解决方案1】:

    Get-FileHash cmdlet 计算文件的哈希值,SHA256 is its default hash algorithm

    计算文件的哈希值:

    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
    

    【讨论】:

    • 当你实际上已经知道答案的时候,为什么还要问一个问题?如果您想与世界分享您的想法,您可以创建一个博客。 ;-)
    • @Olaf ...因为它是encouraged?
    • 好的。 ...今天学到了一些东西。感谢那。 ;-) .... 现在我很好奇...您花了多长时间找到解决方案?
    • 不是很长,但我确实从几个来源综合了一些信息以获得一个可行的单线,我认为值得分享。
    • “方便地,这种比较似乎不区分大小写” - 是的,“-eq”执行不区分大小写的比较。如果您想对事物进行区分大小写的比较,可以使用“-ceq”
    猜你喜欢
    • 2022-01-10
    • 1970-01-01
    • 2023-03-04
    • 2019-07-02
    • 2019-01-20
    • 1970-01-01
    • 2015-05-13
    • 2021-09-27
    • 1970-01-01
    相关资源
    最近更新 更多