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 .

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.


19

Essaye ça:

hexdump -C <<< test

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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.