为什么执行命令openssl sha1 < /dev/null | wc --bytes
后输出为50? SHA-1的输出大小应该是160位,这给我们20个字节。
答案 0 :(得分:5)
为什么输出openssl sha1 < /dev/null | wc --bytes
50?
$ openssl sha1 < /dev/null
(stdin)= da39a3ee5e6b4b0d3255bfef95601890afd80709
因为20字节摘要的前缀为(stdin)=
,并以十六进制表示。
答案 1 :(得分:2)
如果你想要原始的,未格式化的字节,将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