我需要对二进制 sha1 哈希进行 base64 编码。做这个的最好方式是什么?我想这将涉及将二进制数据传输到base64. 不幸的sha1sum是没有二进制输出选项。有任何想法吗?
这是我需要做的:
echo mydata|sha1sum --binary-output|base64
Run Code Online (Sandbox Code Playgroud)
虽然 sha1sum 没有 --binary-output 选项。
也许是这样的:
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。
您可以使用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从输出中删除新行 ( )。
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-1成Base-64:openssl base64
Run Code Online (Sandbox Code Playgroud)