objects must hashing encoded decrypt before python openssl pycrypto hashlib

must - sha1 python



SHa1 hash difieren entre openssl y hashlib/pycrypto (3)

¿Por qué el hash de usar openssl difiere de los que obtengo en python?

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

¿Las cadenas no son equivalentes? ¿Me estoy perdiendo algo obvio?

Editar: Gracias por detectarlo. Estaba canalizando un mensaje guardado de un archivo que también sufre el mismo problema molesto de la nueva línea.

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


Te falta la línea final que echo agregará por defecto:

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

Con el parámetro -n , se repetirá solo la cadena que le diste, para el resultado esperado:

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


echo está poniendo una nueva línea al final de la cadena

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


echo agrega un carácter de nueva línea a la cadena. La opción -n suprime la nueva línea de cola:

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