Frage Wie bekomme ich den MD5-Hash einer Zeichenfolge direkt im Terminal?


Wie bekomme ich das? MD5 Hash einer Zeichenfolge direkt vom Terminal?

Zum Beispiel möchte ich die Zeichenfolge abcdefg Hashed. Zur Zeit der MD5sum Der Befehl akzeptiert nur einen Dateinamen als Eingabe. Ich möchte einfach die folgende Zeile eingeben und alles erledigt sein.

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

Wie kann ich das erreichen?


151
2017-07-20 11:08


Ursprung


md5 -s abcdefg - raitisd


Antworten:


Sie können auch so etwas sagen:

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

Es tut im Grunde dasselbe wie von @enzotib beschrieben, ist aber vielleicht etwas einfacher.


198
2017-07-20 11:47



Sie möchten auch das Beispielergebnis aktualisieren, da 7803ffca ... das Ergebnis ist mit die hinzugefügte Zeilenumbrüche. Das korrekte Ergebnis für den obigen Befehl ist 83218ac34c1834c26781fe4bde918ee4 - - Xanthir
Warum gibt es Leerzeichen und einen Strich am Ende? - keune
Bitte korrigiere mich, wenn ich falsch liege, aber ich denke, das liegt daran, dass die MD5sum auf einen Datenstrom angewendet wurde, im Gegensatz zum Lesen eines Dateiinhalts, dem ein Name zugeordnet ist. - jfmessier
Beachten Sie, dass die -n ist obligatorisch. Ohne es wird Ihr Hash völlig falsch sein, da es das Newline-Zeichen enthält. - Pithikos
Das hat mir auch auf macOS geholfen, obwohl es etwas anders ist: echo -n Welcome | md5 - Edward J. Stembler


Sehr einfach, akzeptiert es stdin, so

md5sum <<<"my string"

So vermeiden Sie die nachgestellte neue Zeile, die von der Shell hinzugefügt wurde:

printf '%s' "my string" | md5sum

58
2017-07-20 11:10



Sowohl @messier als auch @enzotib eine Stimme geben; Beide fallen in meine Kategorie "elegante Einfachheit". Ich wäre geneigt, das zu benutzen <<<" Rohr in einem Skript; echo string gewinnt für die Kommandozeile. Gut gemacht. - Tom
+1 für die Verwendung printfkorrekt. Wenn du die Summe ohne die haben willst -, stellen | cut -d ' ' -f 1. Beispielverwendung: sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1) - Lekensteyn
es ist komisch, aber das <<< Betreiber und die printf Funktion gibt völlig andere Ergebnisse für MD5-Hash! das Ergebnis von printf ist jedoch korrekt! - Hamed Momeni
es scheint mit der Verwendung von <<< Der Operator sendet eine neue Zeile an die md5sum! - Hamed Momeni
Ja, tut es, wie ich zwischen dem ersten und zweiten Beispiel gesagt habe - enzotib


$ echo -n 123456 | md5sum | awk '{print $1}'
e10adc3949ba59abbe56e057f20f883e

Sie können ein Shell-Skript erstellen.

Der Skriptname lautet beispielsweise md5.sh:

#!/bin/bash

echo   -n   $1 | md5sum | awk '{print $1}'

Berechtigung ausführen:

 chmod +x md5.sh

Dann:

$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e

Wenn Ihr System macOS ist. Sie müssen dieses Skript ändern:

$ echo -n 123456 | md5 | awk '{print $1}' 
e10adc3949ba59abbe56e057f20f883e

21
2018-03-09 04:54



Das ist einfach zu lang. - Gucho Ca
Alternative zu awk: cut -d ' ' -f 1 - Blauhirn


Wenn md5sum ohne Argumente ausgeführt wird, liest es Eingaben vom Terminal. Geben Sie ein oder fügen Sie ein, was Sie wollen, und wenn Sie fertig sind, drücken Sie ctrl-d um die Eingabe zu beenden.


9
2017-07-27 15:46



Ja, du hast auch Recht. aber ctrl+d muss zweimal gedrückt werden, damit es funktioniert. - Hamed Momeni
@James, wenn es nicht einem Newline folgt, ja. Wenn Sie es nach dem Drücken von Enter drücken, braucht es nur einmal. Wenn es keiner neuen Zeile folgt, werden alle in der Zeile eingegebenen Zeichen sofort verarbeitet, anstatt sofort auf eine neue Zeile zu warten. - psusi


openssl md5 filename
openssl sha1 filename

Bei String pipe den Inhalt mit echo

echo -n 123456 | openssl md5

8
2017-12-10 11:13





Mein kurzer Stupser bei der --help zum md5sum demonstriert, dass der Befehl:

md5sum -

gibt dann eine Eingabeaufforderung für die einfache Eingabe. Einen Text eingeben und dann verwenden Eingeben und dann Strg+D Das Ende der Datei bedeutet dann md5sum das MD5 des von Ihnen eingegebenen Rohtexts auszuspucken (einschließlich Eingeben, es ist ein CR, IIRC).

Weniger zu tippen und keine Rohrleitungen! Und vermeiden Sie, dass Ihr Klartext-Passwort in der Shell-Historie aufgezeichnet wird! Umwerben!

Wenn Sie diese nachgestellte CR nicht möchten (was normalerweise der Fall ist, wenn Sie ein Passwort hashen wollen), drücken Sie nicht Eingeben Vor Strg+D, eingeben Strg+D zweimal statt.


3
2017-08-21 06:00





In meinen Skripten habe ich festgestellt, dass es zwei Dinge gibt, die Sie über dieses Problem wissen sollten.

  • Es macht nichts, wenn du es tust echo "$myvariable" oder echo -n "$myvariable" aber Sie sollten immer die doubleqoutes für Strings verwenden und immer die gleiche Methode verwenden. wenn nicht, werden die Dinge nicht zusammenpassen.
  • In der Ausgabe erhalten Sie immer ein Leerzeichen und einen Bindestrich, wie im Beispiel gezeigt:

    $ echo -n Welcome | md5sum
    7803ffcaea43bb81a439fde13b29bc35  -
    

um das loszuwerden und nur mit dem Code zu bleiben 7803ffcaea43bb81a439fde13b29bc35, machen: echo "$myvariable" | md5sum | cut -d" " -f1


2
2017-08-02 13:39



Vergiss nicht das -n Parameter hier, um die Ausgabe des nachfolgenden Zeilenumbaus zu vermeiden, was zu einem falschen MD5 führen würde: echo -n $myvariable | md5sum | cut -d" " -f1 - derFunk