Pourquoi les résultats du shasum de Mac diffèrent-ils des autres calculateurs de shasum?

13

J'entre:

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

Et la sortie est:

0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123  -

Ensuite, je vais sur certains générateurs de hachage en ligne et saisis également "test". Leurs réponses sont:

http://hashgenerator.de/ :

ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff

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

EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF

Les générateurs en ligne sont donc d'accord. Que manque-t-il dans la commande de la console Mac?

Je lisais les manpages. Je vois qu'il est implémenté à l'aide d'une bibliothèque Perl. Cependant, je pense que sha512 serait une désignation unique, donc je dois creuser plus profondément.


Il semble y avoir une question en double: pourquoi mon hachage de ligne de commande est-il différent des résultats de hachage MD5 en ligne? . Alors que l'autre question se situe dans le même contexte, qui est un espace inattendu, elle émerge d'une situation différente.

  • <<<est une chaîne ici , et il existe un choix de conception pour la façon dont les chaînes ajoutent une nouvelle ligne.
  • echo 'bla' |signifie tuyauterie, qui appelle des sous-shells, et a également des arguments sur la façon de gérer la nouvelle ligne. Ici, il semble que vous devez considérer la version shell .
peter_the_oak
la source
Merci beaucoup à sideshowbarker et Spiff. Whitespace frappe à nouveau ^^ ^^
peter_the_oak
Notez qu'une chaîne here est censée être exactement identique à un document here d'une ligne, et un document here se termine toujours par une nouvelle ligne.
chepner
Je ne suis pas nouveau dans le shell, mais voici quelques détails et nouvelles sophistiqués dont je suis reconnaissant. Merci donc pour tous les commentaires et réponses.
peter_the_oak
Nous avons donc constaté que la commande shasum de Mac n'est pas différente. Le problème était techniquement une erreur utilisateur et concernait les données transmises, pas le programme. Puis-je suggérer de renommer la question, "Pourquoi est-ce que j'obtiens des résultats différents du shasum de Mac ..." De cette façon, les gens peuvent instantanément suspecter un problème créé par l'utilisateur. (Si je l'avais vu, j'aurais peut-être été moins enclin à vérifier cette question pour le moment. qui n'est pas ce que cela a fini par
devenir

Réponses:

32

L'entrée de l' shasuminvocation dans la question est test\n(avec une nouvelle ligne), non test.

Si vous donnez testsans nouvelle ligne à shasumvous obtiendrez la même sortie que les outils en ligne que vous citez:

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

Soit dit en passant, je pense qu'il n'y a rien de spécial ou de spécifique à MacOS à propos de ce que l'on shasumtrouve sur MacOS; Je pense que cela shasumfait partie de la distribution Perl standard - installée avec, par exemple, la perlcommande.

sidehowbarker
la source
19

Essaye ça:

hexdump -C <<< test

Connaissant les shells Unix, vous obtenez probablement un 0x0a indésirable à la fin de cette chaîne.

Spiff
la source
2
odétiquetera les caractères de contrôle et les rendra plus apparents; essayer: od -t a -t x1 <<< test(jamais vraiment utilisé hexdump),
toddkaufmann