md5作成時の末尾のスペース

md5作成時の末尾のスペース

この質問に既に回答があった場合、または回答が思ったより簡単であればお詫び申し上げます。しかし、次の内容を理解できないようです。

文字列からmd5を生成しようとしたときに使用できます。

echo -n "string" | md5sum | cut -f1 -d' '


または

echo -n "string" | openssl md5


結果は、私が予想した32文字ではなく33文字(使用済みwc -c)です。


だからいくつかの質問があります。

  1. md5sumとopensslの両方に末尾のスペースを追加するのはなぜですか?
  2. 改行や空白なしでmd5ハッシュを生成する他の方法はありますか?
  3. 末尾のスペースは本当に重要ですか?


みんなありがとうございます。

答え1

32文字です!md5sum最後に改行文字を追加します。次のように削除できます。

% echo -n string | md5sum|awk '{print $1}'|wc -c
33
% echo -n $(echo -n string | md5sum|awk '{print $1}')|wc -c
32

またはこれを行うこともできます:

% echo -n $(md5sum <<< 'string'|awk '{print $1}')|wc -c
32

32文字の文字列が独自の行に表示されるため、コマンドの1つが改行文字を追加するタイミングを知ることができます。改行文字がない場合は、常に次のように表示する必要があります。

[prompt %] echo -n $(md5sum <<< 'string'|awk '{print $1}')
b80fa55b1234f1935cea559d9efbc39a[prompt %]

関連情報