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

2968
peter_the_oak

Ich betrete:

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

Und die Ausgabe ist:

0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123 - 

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

http://hashgenerator.de/ :

ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff 

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

EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF 

Also stimmen die Online-Generatoren zu. Was fehlt mir im Mac-Konsolenbefehl?

Ich habe die manSeiten gelesen . Ich sehe es mit einer Perl-Bibliothek implementiert. Ich denke jedoch, dass sha512 eine eindeutige Bezeichnung ist, also muss ich tiefer graben.


Es scheint eine doppelte Frage zu geben: Warum unterscheidet sich mein Befehlszeilen-Hash von Online-MD5-Hash-Ergebnissen? . Während sich die andere Frage in demselben Kontext befindet, der unerwartete Leerzeichen ist, ergibt sich eine andere Situation.

  • <<<ist hier eine Zeichenfolge, und es gibt eine Designauswahl, wie Zeichenfolgen hier Zeilenumbrüche hinzufügen.
  • echo 'bla' |bedeutet Piping, das Sub-Shells aufruft und Argumente für die Behandlung von Zeilenumbrüchen enthält. Anscheinend müssen Sie die Shell-Version berücksichtigen .
12
Vielen Dank an Sideshowbarker und Spiff. Whitespace schlägt wieder zu ^^ ^^ peter_the_oak vor 7 Jahren 0
Mögliches Duplikat von [md5: Warum unterscheidet sich mein Befehlszeilen-Hash von Online-MD5-Hash-Ergebnissen?] (Http://superuser.com/questions/71554/md5-why-is-my-command-line-hash-different- from-online-md5-hash-ergebnisse) muru vor 7 Jahren 5
Beachten Sie, dass ein Here-String genau identisch mit einem einzeiligen Dokument sein soll und dass ein Here-Dokument immer mit einem Zeilenumbruch endet. chepner vor 7 Jahren 0
Ich bin kein Neuling, 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 vor 7 Jahren 0
Wir haben also festgestellt, dass der Shasum-Befehl von Mac nicht anders ist. Das Problem war ein technischer Benutzerfehler und hatte mit den übergebenen Daten zu tun, nicht mit dem Programm. Darf ich vorschlagen, die Frage umzubenennen in "Warum erhalte ich unterschiedliche Ergebnisse von Mac's Shasum ..."? Auf diese Weise können die Leute sofort ein vom Benutzer erstelltes Problem vermuten. (Hätte ich das gesehen, wäre ich vielleicht weniger geneigt gewesen, diese Frage jetzt zu überprüfen. Wie derzeit unter dem Titel "Was verteilt das Mac-Shell-Shasum von anderen Shasum-Rechnern?") Kam ich hierher, um mögliche Mac-spezifische Unterschiede zu erfahren. was ist nicht das, was dies tatsächlich als endete TOOGAM vor 7 Jahren 0
@ TOOGAM: Ich stimme zu, also habe ich den Titel geändert. Vielen Dank für den Vorschlag. peter_the_oak vor 7 Jahren 0

2 Antworten auf die Frage

32
sideshowbarker

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

Wenn Sie testohne Zeilenumbruch geben, erhalten shasumSie dieselbe Ausgabe wie die von Ihnen genannten Online-Tools:

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

Ich glaube übrigens, dass es unter MacOS nichts Besonderes oder MacOS-Spezifisches gibt shasum. Ich denke, dass shasumes Teil der Standard-Perl-Distro ist - installiert zusammen mit zB dem perlBefehl.

19
Spiff

Versuche dies:

hexdump -C <<< test 

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

"od" kennzeichnet Steuerzeichen und macht das offensichtlicher; probiere: `od -ta -t x1 <<< test` (nie wirklich Hexdump benutzt), toddkaufmann vor 7 Jahren 2