从 openssl 二进制 base64 值导出 sha1 哈希

从 openssl 二进制 base64 值导出 sha1 哈希

数字影院包包含以下格式的校验和,如下所述这里

$ openssl sha1  -binary 'dcpfile.xml' |openssl base64
IxcfhXNHlw+1bbDFu0kp8KRylpU=

我怎样才能获取这样的值IxcfhXNHlw+1bbDFu0kp8KRylpU=并导出原始的 sha1 哈希值,它看起来像

$ openssl sha1 'dcpfile.xml' 
SHA1(dcpfile.xml)= 23171f857347970fb56db0c5bb4929f0a4729695

我的用例是,现有的校验和验证工具并不多,它们可以让您轻松验证使用这些二进制/base64 值的 md5sum 类型校验和清单,但有许多工具可以验证 sha1,所以如果我知道如何反转这些值,那就太好了,这样我就可以编写一个脚本来生成更可互操作的哈希列表。

答案1

两个值都是相同的哈希– 相同的“二进制”字节以两种不同的编码(表示)显示,并且没有一个比另一个更“原始”。

(Base64 每个字符有 6 位;十六进制又称 base-16 每个数字有 4 位。三个原始字节、四个 Base64 数字和六个十六进制数字可以直接转换。)

几乎每种编程语言都有对这些格式进行编码/解码的函数。例如,在 shell 工具中:

  • 要将 Base64 解码为原始二进制数据,请使用base64 -dopenssl base64 -d

  • 要将原始二进制数据编码为十六进制,请使用xxd -phexdump

$ echo 23171f857347970fb56db0c5bb4929f0a4729695 | xxd -r -p | base64
IxcfhXNHlw+1bbDFu0kp8KRylpU=

$ echo IxcfhXNHlw+1bbDFu0kp8KRylpU= | base64 -d | hd
00000000  23 17 1f 85 73 47 97 0f  b5 6d b0 c5 bb 49 29 f0  |#...sG...m...I).|
00000010  a4 72 96 95                                       |.r..|

相关内容