2012-01-17 14 views
7

के बीच भिन्न होता है, हैशल का उपयोग करने से हैश क्यों पाइथन में मिलता है?एसएचए 1 हैश openssl और हैशिलिब/pycrypto

$ echo "Lorem ipsum" | openssl dgst -sha1 -hex 
(stdin)= d0c05753484098c61e86f402a2875e68992b5ca3 
$ python 
>>> from hashlib import sha1 
>>> sha("Lorem ipsum").hexdigest() 
'94912be8b3fb47d4161ea50e5948c6296af6ca05' 
>>> from Crypto.Hash import SHA 
>>> SHA.new("Lorem ipsum").hexdigest() 
'94912be8b3fb47d4161ea50e5948c6296af6ca05' 

स्ट्रिंग समकक्ष नहीं हैं? क्या मुझसे साफ़ - साफ़ कुछ चीज़ चूक रही है?

संपादित करें: इसे ढूंढने के लिए धन्यवाद। एक फ़ाइल से एक सहेजा गया संदेश पाइप कर रहा था जो एक ही परेशान न्यूलाइन मुद्दे से पीड़ित है।

$ cat message | openssl dgst -sha1 -hex 
'keep whacking your head mate, it wont be the same' 
$ echo -n $(cat message) | openssl dgst -sha1 -hex 
'ok, you got me, for now' 
+0

सामान्य, हाँ, स्पष्ट, वास्तव में नहीं। – Piskvor

उत्तर

24

आप endline कि echo डिफ़ॉल्ट रूप से जोड़ देंगे, भूल रहे हैं के अंत में एक नई पंक्ति रहा है:

echo "Lorem ipsum" | openssl dgst -sha1 -hex 
(stdin)= d0c05753484098c61e86f402a2875e68992b5ca3 
-n पैरामीटर के साथ

, यह अनुमानित परिणाम के लिए केवल स्ट्रिंग को प्रतिबिंबित करेगा,

echo -n "Lorem ipsum" | openssl dgst -sha1 -hex 
(stdin)= 94912be8b3fb47d4161ea50e5948c6296af6ca05 
6

गूंज स्ट्रिंग

>>> sha("Lorem ipsum\n").hexdigest() 
'd0c05753484098c61e86f402a2875e68992b5ca3' 
1

echo स्ट्रिंग में एक नया अक्षर जोड़ता है। विकल्प -एन पूंछ की नई लाइन को दबाता है:

> echo -n "Lorem ipsum" | openssl dgst -sha1 -hex 
94912be8b3fb47d4161ea50e5948c6296af6ca05 
संबंधित मुद्दे