2009-12-03 6 views
6

मैं क्यों निम्नलिखित वापसी अलग sHA1sपर्ल और/बिन/शाए 1 अलग-अलग परिणाम क्यों देते हैं?

$ 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 - 

कौन सा सही है के रूप में उलझन में हूँ? मैं/मैं/यह गलत कर रहा हूँ?

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

आप देख सकते हैं डाइजेस्ट सही उत्तराधिकारी (Digest::SHA)

+2

इन मामलों में, हमेशा तार को देखने से पहले उन्हें अगले चरण पर देना सुनिश्चित करने के लिए कि वे आप से पहले ही बात कर रहे हैं पाचन करो इसे फ़ाइल में सहेजें और यदि आपको करना है तो हेक्सडम्प करें। –

उत्तर

19

दोनों ठीक कह रहे हैं में है। आपके इको कमांड में अंत में एक नई लाइन शामिल है। (और पर्ल स्ट्रिंग नहीं करता है) echo -n ...

3

यह इतनी बार गलती है और मैंने इसे कई बार बनाया है। इको कमांड भी एक नई लाइन लौट रहा है।

+1

गूंज एक नई लाइन "वापसी" नहीं है। यह एक नई लाइन आउटपुट कर रहा है, और (शायद) 0 लौट रहा है। –

9

पर्ल आपको आपके द्वारा दर्ज की गई शाब्दिक स्ट्रिंग का हैश दे रहा है, जबकि गूंज एक नई लाइन जोड़ रहा है। आप echo बताती हैं कि एक नई पंक्ति जोड़ नहीं करने के लिए, आप एक ही परिणाम प्राप्त करेंगे:

drewfus:~$ perl -MDigest::SHA1 -E'say Digest::SHA1::sha1_hex("foo");' 
0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33 
drewfus:~$ echo -n "foo" | sha1sum 
0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33 - 
संबंधित मुद्दे