web-dev-qa-db-ja.com

md5を生成するときの末尾のスペース

これがすでに回答されている場合、または回答が私が思っているよりも単純な場合はお詫びしますが、次のことを理解できないようです。

文字列からmd5を生成しようとすると、

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


または

echo -n "string" | openssl md5


結果は、私が予想するように32文字ではなく、33文字です(wc -cを使用)。


では、いくつか質問があります。

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


よろしくお願いします。

2
Alex Krycek

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 %]
4
slm