web-dev-qa-db-ja.com

コマンドラインハッシュがオンラインMD5ハッシュ結果と異なるのはなぜですか?

Mac OS X v10.5 (Leopard)PowerPCの場合、次の場合:

エコー「こんにちは」| md5 
b1946ac92492d2347c6235b4d2611184

しかし、 http://md5online.net/ のようなオンラインMD5ハッシュサイトの1つにhelloを入力すると、次のようになります。

5d41402abc4b2a76b9719d911017c592

私は何か間違ったことをしていますか?外出先でMD5を使用したい場合、コマンドラインで取得したものがオンラインのmd5ツールと一致することを確認するにはどうすればよいですか?

22
pellea72

コマンドラインからエコーすると、md5は6文字の合計(h、e、l、l、oと改行)を計算します。 Webサイトに入力するテキストには、改行がありません。

やってみてください

echo -n hello | md5

そしてそれはあなたが期待するものをあなたに与えるでしょう。 -nは、echoに改行を出力しないように指示します。

41
Rudedog

Echoの代わりにprintfを使用することもできます。これにより、改行文字が自動的に抑制されます。

printf hello | md5

あるいは:

printf "hello" | md5
3
EarlGrey

b1946ac92492d2347c6235b4d2611184は、文字列だけのmd5です。

hello

5d41402abc4b2a76b9719d911017c592はのmd5です

hello

CR + LF

CR + LFはWindowsの改行です。

2
user1863

私の5セントを追加して答えを拡張するには:Linuxではmd5ではなくmd5sumなので、次のことを行う必要があります。

echo -n hello | md5sum