如何让sha1sum输出二进制?

jca*_*314 8 linux

我需要对二进制 sha1 哈希进行 base64 编码。做这个的最好方式是什么?我想这将涉及将二进制数据传输到base64. 不幸的sha1sum是没有二进制输出选项。有任何想法吗?

这是我需要做的:

echo mydata|sha1sum --binary-output|base64
Run Code Online (Sandbox Code Playgroud)

虽然 sha1sum 没有 --binary-output 选项。

Jar*_*kia 6

也许是这样的:

echo mydata | sha1sum | xxd -r -p | base64
Run Code Online (Sandbox Code Playgroud)

...会解决你的问题。

有关类似问题,请参阅https://unix.stackexchange.com/questions/82561/convert-a-hex-string-to-binary-and-send-with-netcat

  • 美丽的!这_也_在 macOS Big Sur Beta(2020 年末)下完美运行。 (2认同)

Sey*_*d M 5

您可以使用openssl来计算SHA-1-binary以二进制形式输出摘要。

最后一个管道将二进制摘要转换为 Base-64。

echo -n mydata | openssl dgst -binary -sha1 | openssl base64
Run Code Online (Sandbox Code Playgroud)

解释

将数据(mydata在本例中)发送到 STDOUT:
echo -n mydata
Run Code Online (Sandbox Code Playgroud)

-n标志\n从输出中删除新行 ( )。

通过 OpenSSL计算SHA-1
 openssl dgst -sha1
Run Code Online (Sandbox Code Playgroud)

但是,该命令SHA-1以十六进制模式显示,对于二进制,-binary需要添加该标志:

openssl dgst -binary -sha1
Run Code Online (Sandbox Code Playgroud)
转换SHA-1Base-64
openssl base64
Run Code Online (Sandbox Code Playgroud)

  • 您能否[编辑]您的答案来解释为什么这段代码回答了这个问题?仅代码答案是[不鼓励](https://meta.stackexchange.com/questions/148272),因为它们不教授解决方案。 (2认同)

Bil*_*hor 4

尝试将十六进制转换为 base64。这个答案是一种选择。还有许多其他实现。

如何从十六进制转换为 Base64?