2010-07-28 52 views
143

Sé que la cadena "foobar" genera el hash de 256 SHA c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2 usando http://hash.online-convert.com/sha256-generatorGeneración de un sha256 desde la línea de comandos de Linux

Sin embargo, el shell de línea de comandos:

[email protected] ~$ echo foobar | sha256sum 
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f - 

genera un hash diferente. ¿Qué me estoy perdiendo?

+2

'sha256sum koppor

+3

@koppor ' mvds

Respuesta

210

echo normalmente emitirá una nueva línea, que se suprime con -n. Prueba esto:

echo -n foobar | sha256sum 
+0

¿Es este comando 'sha256sum' igual que el comando de resumen en Solaris? – user3153014

+0

parece que, http://www.opensolarisforum.org/man/man1/digest.html, 'digest -a sha256' debería hacerlo. – mvds

+39

NOTA: en OS X (BSD), es 'echo -n foobar | shasum -a 256' – Olie

7

creo que echo da salida a un salto de línea final. Intente usar -n como un parámetro para echo para omitir la nueva línea.

7

echo produce un carácter de nueva línea al final que también es hash. Proveedores:

/bin/echo -n foobar | sha256sum 
25

echo -n obras, y es poco probable que desaparezca nunca debido al uso histórico masiva, sin embargo por las versiones recientes de the POSIX standard, nuevas aplicaciones conformes se "anima a utilizar printf".

35

Si el sha256sum comando no está disponible (en Mavericks, por ejemplo), puede utilizar:

echo -n "foobar" | shasum -a 256

+0

¡Agradable! He agregado esto a mi función .bash_profile sha256() {echo -n "$ *" | shasum -a 256} y llame al: ~ $ sha256 foobar – rbento

+0

A diferencia de la respuesta aceptada, esto funciona para MacOS – weefwefwqg3

49

Si ha instalado openssl, puede utilizar:

echo -n "foobar" | openssl dgst -sha256 

Por otra algoritmos que puede reemplazar -sha256 con -md4, -md5, -ripemd160, -sha, -sha1, -sha224, -sha384, -sha512 o -whirlpool.

+0

¿Hay alguna forma de especificar el número de rondas que desea en sha512? Miré y no pude encontrarlo y me pregunté si lo sabrías. – f1lt3r

+1

@AlistairMacDonald - No sé exactamente lo que estás buscando.AFAIK, SHA512 necesita 80 rondas; Si desea manipular la función, ya no será sha512. Por cierto, puede buscar/hacer su pregunta en [crypto.stackexchange.com] (https://crypto.stackexchange.com/ "Cryptography Stack Exchange"). – Farahmand

+1

A diferencia de la respuesta aceptada, esto funciona para MacOS. – weefwefwqg3

Cuestiones relacionadas