3

コマンドopenssl sha1 < /dev/null | wc --bytesの実行後に出力が 50 になるのはなぜですか? SHA-1 の出力サイズは 160 ビットで、20 バイトになります。

4

2 に答える 2

6

出力がopenssl sha1 < /dev/null | wc --bytes50 になるのはなぜですか?

$ openssl sha1 < /dev/null
(stdin)= da39a3ee5e6b4b0d3255bfef95601890afd80709

20 バイトのダイジェストの前に が付けられ(stdin)=、16 進数で表されるためです。

于 2012-06-20T13:08:01.740 に答える
2

生のフォーマットされていないバイトが必要な場合は、16進フォーマットの出力を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 に答える