Warum erhalte ich von Macs Shasum andere Ergebnisse als von anderen Shasum-Rechnern?

13

Ich betrete:

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

Und die Ausgabe ist:

0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123  -

Dann gehe ich zu einigen Online-Hash-Generatoren und gebe auch "test" ein. Ihre Antworten sind:

http://hashgenerator.de/ :

ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff

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

EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF

Also sind sich die Online-Generatoren einig. Was fehlt mir im Mac-Konsolenbefehl?

Ich habe die manSeiten gelesen . Ich sehe, dass es mit einer Perl-Bibliothek implementiert wird. Ich denke jedoch, sha512 wäre eine einzigartige Bezeichnung, deshalb muss ich tiefer graben.


Es scheint eine doppelte Frage zu geben: Warum unterscheidet sich mein Befehlszeilen-Hash von den Online-MD5-Hash-Ergebnissen? . Während sich die andere Frage im selben Kontext befindet, der ein unerwartetes Leerzeichen darstellt, entsteht sie aus einer anderen Situation.

  • <<<ist eine Hier-Zeichenfolge , und es gibt eine Designauswahl, wie hier Zeichenfolgen Zeilenvorschub hinzufügen.
  • echo 'bla' |bedeutet Piping, das Sub-Shells aufruft und auch Argumente für den Umgang mit Newline enthält. Hier scheint es, dass Sie die Shell-Version berücksichtigen müssen .
peter_the_oak
quelle
Vielen Dank an Sideshowbarker und Spiff. Whitespace schlägt wieder zu ^^ ^^
peter_the_oak
Beachten Sie, dass eine Here-Zeichenfolge genau mit einem einzeiligen Here-Dokument identisch sein soll und ein Here-Dokument immer mit einer neuen Zeile endet.
Chepner
Ich bin nicht neu in Shell, aber hier sind einige raffinierte Details und Neuigkeiten, für die ich dankbar bin. Also vielen Dank für alle Kommentare und Antworten.
peter_the_oak
Wir haben festgestellt, dass Macs Befehl shasum nicht anders ist. Das Problem war technisch gesehen ein Benutzerfehler und hatte mit den übergebenen Daten zu tun, nicht mit dem Programm. Darf ich vorschlagen, die Frage in "Warum erhalte ich unterschiedliche Ergebnisse von Mac shasum ..." umzubenennen? Auf diese Weise können Benutzer sofort ein vom Benutzer erstelltes Problem vermuten. (Hätte ich das gesehen, wäre ich jetzt vielleicht weniger geneigt gewesen, diese Frage zu beantworten. Wie der aktuelle Titel lautet: "Was verteilt das Mac-Shell-Shasum von anderen Shasum-Taschenrechnern?", Bin ich hierher gekommen, um Informationen über mögliche Mac-spezifische Unterschiede zu erhalten. Das ist nicht das, was das eigentlich war
TOOGAM

Antworten:

32

Die Eingabe für den shasumAufruf in der Frage erfolgt test\n(mit einem Zeilenumbruch) nicht test.

Wenn Sie testohne Zeilenvorschub angeben, erhalten shasumSie die gleiche Ausgabe wie die von Ihnen angegebenen Online-Tools:

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

Übrigens, ich denke, es gibt nichts Besonderes oder MacOS-spezifisches an dem, was shasumman unter MacOS findet. Ich denke, es shasumist Teil der Standard-Perl-Distribution, die zusammen mit z perl. B. dem Befehl installiert wird .

sideshowbarker
quelle
19

Versuche dies:

hexdump -C <<< test

Wenn Sie Unix-Shells kennen, erhalten Sie wahrscheinlich ein unerwünschtes 0x0a am Ende dieser Zeichenfolge.

Spiff
quelle
2
odbeschriftet Steuerzeichen und macht das offensichtlicher; versuchen: od -t a -t x1 <<< test(nie wirklich Hexdump verwendet),
Toddkaufmann