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 echo
in 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 md5sum
direkt 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 echo
ist 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 printf
stattdessen.
Daher sollten Sie verwenden
$ printf '%s' 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6 -
$
Wenn Sie am Ende printf
eine 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 echo
auf 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 vonecho
die ich oben erwähnt habe, hier sind einige:
- Es funktioniert auf verschiedenen Systemen unterschiedlich. Viele moderne Systeme unterstützen
-n
die Anweisung,echo
die 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
-n
oder 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.