为什么执行命令后openssl sha1 < /dev/null | wc --bytes
输出为50?SHA-1 的输出大小应该有 160 位,这给了我们 20 个字节。
问问题
1417 次
2 回答
6
为什么输出是openssl sha1 < /dev/null | wc --bytes
50?
$ openssl sha1 < /dev/null
(stdin)= da39a3ee5e6b4b0d3255bfef95601890afd80709
因为 20 字节的摘要以十六进制为前缀,(stdin)=
并以十六进制表示。
于 2012-06-20T13:08:01.740 回答
2
如果您想要原始的、未格式化的字节,请将 OpenSSL 的十六进制格式输出通过管道传输到xxd -r -p
,以将该表示形式转换为原始字节。
例如,要对字符串进行 Base64 编码的 SHA-1 摘要foo
:
$ echo "foo" | openssl sha1 | xxd -r -p | base64
8dLS+STphqyG/fezbJS83zK+7BU=
或者简单地验证消息长度:
$ echo "foo" | openssl sha1 | xxd -r -p | wc --bytes
20
于 2012-11-26T10:11:34.580 回答