为什么在执行命令openssl sha1 < /dev/null | wc --bytes
openssl sha1 < /dev/null | wc --bytes
的输出是50? SHA-1的输出大小应该是160比特,这使我们有20个字节。
为什么openssl sha1 < /dev/null | wc --bytes
的输出openssl sha1 < /dev/null | wc --bytes
openssl sha1 < /dev/null | wc --bytes
50?
$ openssl sha1 < /dev/null (stdin)= da39a3ee5e6b4b0d3255bfef95601890afd80709
因为20字节摘要的前缀是(stdin)=
并以十六进制表示。
如果您需要原始未格式化的字节,请将OpenSSL的十六进制格式的输出传输到xxd -r -p
,将该表示转换为原始字节。
例如,要对字符串foo
进行Base64编码的SHA-1摘要,
$ echo "foo" | openssl sha1 | xxd -r -p | base64 8dLS+STphqyG/fezbJS83zK+7BU=
或者只是验证消息长度:
$ echo "foo" | openssl sha1 | xxd -r -p | wc --bytes 20