sha1编码后base64编码,为什么结果不一样

base64 encoding after sha1 encoding, why different results

我尝试在shell中执行这两个命令,我认为结果应该是一样的,但不是。

(1)

echo -n 123456 | openssl sha1 -binary | base64 

结果:

fEqNCco3Yq9h5ZUglD3CZJT4lBs=

(2)

echo -n 123456 | openssl sha1 | base64

结果:

KHN0ZGluKT0gN2M0YThkMDljYTM3NjJhZjYxZTU5NTIwOTQzZGMyNjQ5NGY4OTQxYgo=

我认为命令 'base64' 的输入应该是相同的字节数组。为什么我得到不同的结果?

解码结果会告诉你发生了什么。

第二种情况,decodedBase64字符串包含:

(stdin)= 7c4a8d09ca3762af61e59520943dc26494f8941b

所以你得到一个哈希的十六进制字符串,而不是二进制值,加上开头完全不需要的 '(stdin)= '。

-binary 你得到想要的二进制值。