2009-12-03 13 views
6

私は、なぜ次の戻り別のsHA1s右である1Perlと/ bin/sha1の結果が異なるのはなぜですか?

$ perl -MDigest::SHA1 -E'say Digest::SHA1::sha1_hex("http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg");' 
e1133fa3b7ea0bfb8ffa4d877932ed6c6fa10cef 

$ echo "http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg" | sha1sum 
5c3731e83ae0184ed93b595b9f5604863dd331e6 - 

へと困惑していますか? Am/I /それは間違っている?

あなたはダイジェストが後継者に正しいと見ることができる
$ perl -MDigest::SHA -E'say Digest::SHA::sha1_hex("http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg");' 
e1133fa3b7ea0bfb8ffa4d877932ed6c6fa10cef 

Digest::SHA

+2

:あなたは改行を追加しないためにechoを伝える場合は、同じ結果を得るでしょう消化してください。それをファイルに保存し、必要があればそれをヘキサダンプします。 –

答えて

19

どちらが正しいです。 echoコマンドの最後に改行が含まれています。 (そしてperl文字列はそうではありません)試してみてくださいecho -n ...

3

これは頻繁な間違いであり、何度も作っています。 echoコマンドは改行も返しています。

+1

エコーは改行を「返す」わけではありません。改行を出力していて、(おそらく)0を返しています。 –

9

Perlは入力したリテラル文字列のハッシュを与えていますが、echoは改行を追加しています。あなたが次のステップにそれらを与える前に、常に彼らがあなたの前に同じものであることを確認するために、文字列を見て、これらのケースでは

drewfus:~$ perl -MDigest::SHA1 -E'say Digest::SHA1::sha1_hex("foo");' 
0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33 
drewfus:~$ echo -n "foo" | sha1sum 
0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33 - 
関連する問題