2009-12-03 21 views
6

estoy confundido en cuanto a por qué los siguientes sHA1s separados de retorno¿Por qué Perl y/bin/sha1 dan resultados diferentes?

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

¿Cuál es la correcta? ¿Lo estoy haciendo mal?

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

Se puede ver el resumen es justo en el sucesor (Digest::SHA)

+2

En estos casos, siempre se ven en las cuerdas antes de darle al siguiente paso para asegurar que son la misma cosa antes haz el resumen Guárdelo en un archivo y gírelo hexdump si es necesario. –

Respuesta

19

Ambos tienen razón. Su comando echo incluye una nueva línea al final. (y la cadena perl no) Pruebe con echo -n ...

3

Esto es un error tan frecuente y lo he hecho muchas veces. El comando echo también está devolviendo una nueva línea.

+1

echo no está "devolviendo" una nueva línea. Está generando una nueva línea y (probablemente) devolviendo 0. –

9

Perl te proporciona el hash de la cadena literal que ingresaste, mientras que echo agrega una nueva línea. Si usted le dice a echo no añadir una nueva línea, que obtendrá el mismo resultado:

drewfus:~$ perl -MDigest::SHA1 -E'say Digest::SHA1::sha1_hex("foo");' 
0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33 
drewfus:~$ echo -n "foo" | sha1sum 
0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33 - 
Cuestiones relacionadas