
文字列の md5 ハッシュを取得しようとしています。この文字列は、大文字と小文字、および数字のみで構成されています。スペースや改行を含むその他の文字は含まれていません。文字列はファイル入力ではなくキーボードから入力されるため、BOM やその他のフラグは存在しません。
ローカルで実行すると、md5sum
次の出力が得られます。
ubuntu@ubuntu:~$ echo word | md5sum
a46ec67a0f2e7c387926ac5d783ea4b8 -
ubuntu@ubuntu:~$ echo "word" | md5sum
a46ec67a0f2e7c387926ac5d783ea4b8 -
ubuntu@ubuntu:~$ echo "word" -n | md5sum
3a21ca21563e9535a9012daef61a0bdf -
上記の2番目と3番目の出力の違いはわかっています改行文字がないために((そうではありませんでした!受け入れられた回答を参照してください。)-n
)。この部分は私には明らかです
しかし、3番目の結果を出すツールもあります。CLI以外のツールはすべて、同じ結果、それが私を混乱させるのです:
- http://www.miraclesalad.com/webtools/md5.php よりそれは だと言っています
c47d187067c6cf953245f128b5fde62a
。 - http://www.md5hashgenerator.com/それは だと言っています
c47d187067c6cf953245f128b5fde62a
。 - http://www.md5.cz/それは だと言っています
c47d187067c6cf953245f128b5fde62a
。 - http://www.md5online.org/md5-encrypt.htmlそれは だと言っています
c47d187067c6cf953245f128b5fde62a
。 - http://md5-hash-online.waraxe.us/それは だと言っています
c47d187067c6cf953245f128b5fde62a
。 - このAndroidアプリそれは だと言っています
c47d187067c6cf953245f128b5fde62a
。 echo -n "word" | unix2dos | md5sum
私に与えますc47d187067c6cf953245f128b5fde62a
。
何が起きてる?
答え1
$ echo "word" -n | md5sum
3a21ca21563e9535a9012daef61a0bdf -
$ echo "word -n" | md5sum
3a21ca21563e9535a9012daef61a0bdf -
$ echo "-n" word | md5sum
c47d187067c6cf953245f128b5fde62a -
具体的には、次の点に注意してください。
$ echo "word" -n
word -n
すべてのオプションは、非オプション引数の前に来なければなりません。これは、一部の GNU ユーティリティを除くほとんどのプログラムに当てはまり、 のすべての実装に当てはまりますecho
(echo
ただし、 で始まるほとんどの文字列は-
引数として解釈されますが、そのように認識されるオプションはごくわずかです)。