python SHA1 हैश openssl और hashlib/pycrypto के बीच भिन्न है




(3)

हैश का इस्तेमाल करने से क्यों मैं अजगर में मिलता है?

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

गूंज स्ट्रिंग के अंत में एक नई पंक्ति डाल रहा है

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

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

> echo -n "Lorem ipsum" | openssl dgst -sha1 -hex
94912be8b3fb47d4161ea50e5948c6296af6ca05

आप अंतराल खो रहे हैं जो echo डिफ़ॉल्ट रूप से जोड़ देगा:

echo "Lorem ipsum" | openssl dgst -sha1 -hex
(stdin)= d0c05753484098c61e86f402a2875e68992b5ca3

-n पैरामीटर के साथ, यह केवल उस स्ट्रिंग को गूंजती है जो आपने दी है, अपेक्षित परिणाम के लिए:

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






hashlib