【问题标题】:Why is the sha256 hash key different from Command Prompt and Powershell为什么 sha256 哈希键与命令提示符和 Powershell 不同
【发布时间】:2020-06-06 23:26:22
【问题描述】:

所以我目前正在做一个项目,我遇到了完整性哈希。因此,我被教导使用 openssl sha256 对 css 文件进行哈希处理以进行练习。我在终端、命令提示符和 Powershell 中执行此操作。

终端给出了与命令提示符相同的结果,但 powershell 给出了一个全新的结果。

命令提示符 3BmtwdrKmE6lXPHGqB1Z1jEERC8phQpUwTHMblpJ0Gw=

终端 3BmtwdrKmE6lXPHGqB1Z1jEERC8phQpUwTHMblpJ0Gw=

PowerShell Pxk/Pz8/P04/XD8/Px1ZPzEERC8pPw0KVD8xP25aST9sDQo=

tl;博士

基本上我只是想知道终端和命令提示符对powershell的不同输出

额外:

我对网络安全非常感兴趣,我想了解更多信息、提高技能并尽一切努力成为独角兽。随时给我批评/建议

【问题讨论】:

  • 删除管道和第二个命令,如果它真的是哈希,那是不同的。
  • 对不起什么是“管道”,我应该去哪里学习这个:)
  • 管道是| 这个。它在 PowerShell 中的行为不同,可能是原因。但也可能是这样,您没有散列完全相同的文件,因此散列不同。

标签: powershell terminal openssl command-prompt sha


【解决方案1】:

您正在处理从这些 shell 运行时命令提示符、PowerShell 和 OpenSSL 对此类的解释之间的输出编码差异。

要从命令提示符查看您的活动代码页,请运行 chcp.com。要在 PowerShell 中查看您的活动输出编码,请检查 $OutputEncoding 变量的状态。 注意:您将看到代码页差异。

您可能会徒劳地尝试将两者设置为相同的输出编码类型,但 OpenSSL 很可能仍会报告差异。

例如,您可以在 PowerShell 中查看所有输出编码类型的 OpenSSL 输出:

[System.Text.Encoding]::GetEncodings() | % { "`n`nCodePage $($_.CodePage):"; $OutputEncoding = [System.Text.Encoding]::GetEncoding($_.CodePage); openssl dgst -sha256 -binary .\index-styles.css | openssl base64 -A }

注意:与 OpenSSL 的命令提示符输出相比,我怀疑是否列出了类似的哈希值。

无论如何,为了避免这个问题,我建议使用OpenSSL的内置-out file参数,然后调用OpenSSL两次,而不是依赖管道(|):

openssl dgst -sha256 -binary -out .\index-styles.out .\index-styles.css
openssl base64 -A -in .\index-styles.out

在使用-out file 然后使用-in file 时,您应该(理论上)在命令提示符和 PowerShell 中从 OpenSSL 获得一致的结果

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多