Openssl sha1的长度

为什么在执行命令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