¿Por qué obtengo resultados diferentes del shasum de Mac que de otras calculadoras de shasum?

13

Estoy entrando:

appletree:~ somename$ shasum -a 512 <<< test

Y la salida es:

0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123  -

Luego voy a algunos generadores de hash en línea y también ingreso "test". Sus respuestas son:

http://hashgenerator.de/ :

ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff

http://passwordsgenerator.net/sha512-hash-generator/ :

EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF

Entonces los generadores en línea están de acuerdo. ¿Qué me falta en el comando de la consola Mac?

Estaba leyendo las manpáginas. Veo que se implementa usando una biblioteca Perl. Sin embargo, creo que sha512 sería una designación única, así que tengo que cavar más profundo.


Parece que hay una pregunta duplicada: ¿por qué mi hash de línea de comandos es diferente de los resultados de hash MD5 en línea? . Mientras que la otra pregunta está en el mismo contexto, que es un espacio en blanco inesperado, surge de una situación diferente.

  • <<<es una cadena aquí , y hay una opción de diseño de cómo las cadenas aquí agregan nueva línea.
  • echo 'bla' |significa tubería, que invoca subcapas, y también tiene argumentos sobre cómo manejar la nueva línea. Aquí parece que debes considerar la versión de shell .
peter_the_oak
fuente
Muchas gracias a Sidehowbarker y Spiff. El
espacio en blanco
Tenga en cuenta que una cadena here pretende ser exactamente idéntica a un documento here de una línea, y un documento here siempre termina con una nueva línea.
chepner
No soy nuevo en shell, pero aquí hay algunos detalles sofisticados y noticias que agradezco. Así que gracias por todos los comentarios y respuestas.
peter_the_oak
Entonces encontramos que el comando shasum de Mac no es diferente. El problema era técnicamente un error del usuario y tenía que ver con los datos que se pasaban, no con el programa. ¿Puedo sugerir que cambie el nombre de la pregunta a "¿Por qué obtengo resultados diferentes del shasum de Mac ..."? De esa manera, la gente puede sospechar instantáneamente un problema creado por el usuario. (Si hubiera visto eso, podría haber estado menos inclinado a revisar esta pregunta en este momento. Como se titula actualmente: "¿Qué distribuye el shasum de shell de Mac desde otras calculadoras de shasum?", Vine aquí para conocer las posibles diferencias específicas de Mac, que no es lo que esto realmente terminó como
TOOGAM

Respuestas:

32

La entrada a la shasuminvocación en la pregunta es test\n(con una nueva línea), no test.

Si cede testsin una nueva línea shasum, obtendrá el mismo resultado que las herramientas en línea que cita:

$ echo -n "test" | shasum -a 512
ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff  -

Por cierto, creo que no hay nada especial o específico de MacOS sobre lo shasumencontrado en MacOS; Creo que shasumes parte de la distribución estándar de Perl, instalada junto con, por ejemplo, el perlcomando.

sidehowbarker
fuente
19

Prueba esto:

hexdump -C <<< test

Conociendo los shells de Unix, probablemente obtenga un 0x0a no deseado al final de esa cadena.

Spiff
fuente
2
odetiquetará los caracteres de control y los hará más evidentes; intente: od -t a -t x1 <<< test(realmente nunca usó hexdump),
toddkaufmann