我需要对二进制 sha1 哈希进行 base64 编码。最好的方法是什么?我想这会涉及将二进制数据传输到base64
。不幸的是,sha1sum
没有二进制输出选项。有什么想法吗?
这是我需要做的:
echo mydata|sha1sum --binary-output|base64
但是 sha1sum 没有 --binary-output 选项。
答案1
尝试将十六进制转换为 base64。此答案是一种选择。还有许多其他实现。
答案2
也许是这样的:
echo mydata | sha1sum | xxd -r -p | base64
... 可以解决您的问题。
看https://unix.stackexchange.com/questions/82561/convert-a-hex-string-to-binary-and-send-with-netcat对于类似的问题。
答案3
您可以使用openssl
来计算SHA-1
并-binary
以二进制形式输出摘要。
最后管道将二进制摘要转换为 Base-64。
echo -n mydata | openssl dgst -binary -sha1 | openssl base64
解释
将数据(mydata
在本例中)发送到 STDOUT:
echo -n mydata
-n
\n
标志从输出中删除新行( )。
SHA-1
通过 OpenSSL计算:
openssl dgst -sha1
但是该命令是以SHA-1
HEX方式显示的,若要显示二进制则-binary
需要添加flag:
openssl dgst -binary -sha1
转换SHA-1
成Base-64
:
openssl base64