method1:
$echo -n "The quick brown fox jumps over the lazy dog" | openssl sha1 | base64
MmZkNGUxYzY3YTJkMjhmY2VkODQ5ZWUxYmI3NmU3MzkxYjkzZWIxMgo=
method2:
$ echo -n "The quick brown fox jumps over the lazy dog" | openssl sha1 | xxd -r -p | base64
L9ThxnotKPzthJ7hu3bnORuT6xI=
method3:
echo -n "The quick brown fox jumps over the lazy dog" | openssl sha1 | xxd -b -p | base64
MzI2NjY0MzQ2NTMxNjMzNjM3NjEzMjY0MzIzODY2NjM2NTY0MzgzNDM5NjU2NTMxNjI2MjM3MzY2NTM3CjMzMzkzMTYyMzkzMzY1NjIzMTMyMGEK
我基本上是在尝试The quick brown fox jumps over the lazy dog
通过 sha1 对输入字符串进行校验和作为校验和,然后对结果进行 base64,我有上面两种方法,我认为这method2
是正确的答案,但我必须通过额外的步骤将十六进制转换回xxd -r
二进制在我再次将其输入 base64 之前的纯格式-p
,为什么我必须做这个额外的步骤?
我在任何地方都找不到 base64 cmd 工具期望输入是二进制的?但是让我们假设,当我将其显式转换为二进制并通过 将其提供给 base64 时mehod3 xxd -b option
,结果再次不同。
如果使用编程语言 bcos 可能会更容易,因为我们可以完全控制但通过一些 cmd 工具有点混乱,有人可以帮我解释一下吗?