Wie erstelle ich einen MD5-Hash über die Arch Linux-Befehlszeile?

Wie erstelle ich einen MD5-Hash über die Arch Linux-Befehlszeile?

Wie kann ich in Arch Linux über die Befehlszeile einen einzelnen MD5-Hash für ein Passwort erstellen? Natürlich bin ich mir bewusst, dass es sichere Hashing-Algorithmen für Passwörter gibt, was bei MD5 nicht der Fall ist, aber dies ist nur Teil eines Experiments.

Antwort1

Konvertieren Sie es einfach echoin MD5SUM.

Das erste Ergebnis berücksichtigt vor der Hash-Generierung ein Zeilenumbruchzeichen am Ende der Zeichenfolge.

$ echo P@ssword1 | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -

Ansonsten als@AFHWenn Sie kein Zeilenumbruchzeichen wünschen, gehen Sie wie folgt vor:

$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -

Antwort2

In keiner der Antworten wird erwähnt echo -n 'password' | …, dass Sie mit Ihr Kennwort in einen dauerhaften Speicher, nämlich Ihren Verlauf, schreiben.

Sie können dies je nach Shell vermeiden, indem Sie dem Befehl ein Leerzeichen voranstellen (testen Sie dies für Ihre Shell). Lesen Sie in der Dokumentation Ihrer Shell nach, wie dies gehandhabt wird.

Alternativ können Sie md5sumdirekt verwenden, indem Sie ausführen md5sum, das Kennwort eingeben und dann Ctrl+D. Geben Sie Enterzwischen dem Kennwort und nichts ein Ctrl+D, es sei denn, Sie möchten eine neue Zeile in den Hash aufnehmen.

Antwort3

Hier ist ein Beispiel mit OpenSSL

echo -n 'stack overflow' | openssl md5
(stdin)= 481b8423202598ecfb233c5fa68caf68

Openssl implementiert mehrere verschiedene Hashing-Algorithmen, falls Sie irgendwann einen anderen benötigen.

Antwort4

Es scheint, als ob jeder vorschlägt echo, -- zumindest meistens, zum Glück, mit zu verwenden -n, was linderteinsseiner Probleme (dass es am Ende eine neue Zeile druckt).

Aber es echoist nicht unbedingt konsistent. Es hat eine Reihe von Verhaltensmängeln, die Sie beachten müssen, und kann zwischen Systemen inkompatibel sein. Es ist besser,verwenden Sie printfstattdessen.

Daher sollten Sie verwenden

$ printf '%s' 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -
$

Wenn Sie am Ende printfeine neue Zeile wünschen, müssen Sie diese explizit selbst hinzufügen:

$ printf '%s\n' 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -
$ echo 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -
$

anstatt darum bitten zu müssen, es nicht zu erhalten (und zu hoffen, dass es echoauf dem System, auf dem es zufällig zu einem späteren Zeitpunkt ausgeführt wird, genauso funktioniert):

$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -
$

Um noch näher auf den Punkt einzugehen,die Macken vonechodie ich oben erwähnt habe, hier sind einige:

  • Es funktioniert auf verschiedenen Systemen unterschiedlich. Viele moderne Systeme unterstützen -ndie Anweisung, echodie Ausgabe nicht mit einem Zeilenumbruch zu beenden, aber einige tun dies möglicherweise nicht. Und was, wenn Sie tatsächlich drucken möchten -n? Einige Implementierungen können sich tatsächlich unterscheiden, basierend aufEinstellungenin der Shell oder Umgebung.
  • Es behandelt einige Zeichenfolgen (insbesondere Backslash-Escape-Zeichen) auf eine spezielle Weise, oder behandelt sie möglicherweise nicht. Es ist nicht völlig unvernünftig, diese in Passwörtern zu haben, und POSIX garantiert nichts über das Verhalten von echo (sein Verhalten ist speziellnicht definiert), wenn das erste Argument -noder eines seiner Argumente Backslashes enthält.

Die Antworten auf die oben verlinkte Frage zur Verwendung von printf statt echo enthalten noch einige weitere Informationen sowie weitere Links zum Weiterlesen, falls Sie neugierig sind.

verwandte Informationen