如何在 cli 上获得 base64 编码的 shaX?

xen*_*ide 40 cryptography base64 hashsum

sha1sum输出实际 sha 的十六进制编码格式。我想看到一个 base64 编码的变体。可能有一些命令输出我可以通过管道echo -n "message" | <some command> | base64传输的二进制版本,就像这样:或者如果它直接输出它也很好。

Gil*_*il' 57

如果您有来自OpenSSL的命令行实用程序,它可以生成二进制格式的摘要,甚至可以转换为 base64(在单独的调用中)。

echo -n foo | openssl dgst -binary -sha1 | openssl base64
Run Code Online (Sandbox Code Playgroud)

  • 对 base64 使用 `openssl` 也具有仅依赖于一种工具的优势(`ksh: base64: not found`)。 (4认同)
  • `echo foo | openssl dgst -binary -sha1 | base64` 是等效的,并且可能是最简洁的方法。 (2认同)
  • 对于像`sha512`这样的大型消息摘要哈希,您可能需要在最后的`openssl base64`命令中添加`-A`选项,以防止将结果字符串分成多行。 (2认同)

ale*_*lex 25

由于sha1sum不提供二进制输出选项,您可能需要找到一个od与它们相反的实用程序并通过管道传输它们。根据 fschmitt 的建议,xxd与 'reverse' 和 'plain dump' 标志一起使用,它将如下所示:

sha1sum | cut -f1 -d\ | xxd -r -p | base64