So erstellen Sie einen MD5-Hash über die Arch Linux-Befehlszeile

4055
Paradox

Wie kann ich in Arch Linux einen einzelnen MD5-Hash für ein Kennwort mithilfe der Befehlszeile erstellen? Natürlich ist mir bewusst, dass sichere Passwort-Hashing-Algorithmen zur Verfügung stehen, die mit md5 nicht möglich sind. Dies ist jedoch nur Teil eines Experiments.

7
Sie können das Wort "mehr" vor "sicher" entfernen. Es gibt da draußen sichere Hashes (oder zumindest Hashes mit gewisser Sicherheit), MD5 gehört nicht dazu. Todd Wilcox vor 7 Jahren 4
Nur für ein Protokoll: Auch ein sicherer kryptografischer Hash wie SHA-256 ist kein direkter * Passwort * -Hash. Ich weiß, dass Sie zumindest etwas wie Salz brauchen, um Regenbogen-Tischangriffe zu besiegen (https://en.wikipedia.org/wiki/Salt_ (Kryptographie)), und ich bin mir sicher, dass es andere Probleme gibt nicht bewusst. Peter Cordes vor 7 Jahren 2

6 Antworten auf die Frage

18
Unfundednut

Einfach echozu md5sum.

Das erste Ergebnis berücksichtigt ein Zeilenvorschubzeichen am Ende der Zeichenfolge, bevor der Hash generiert wird.

$ echo P@ssword1 | md5sum 0a43c426e3d6764fe1f3f7cbb3579eba - 

Andernfalls, wie @AFH angibt, wenn Sie keine Zeilenumbrüche haben möchten, gehen Sie wie folgt vor:

$ echo -n 'P@ssword1' | md5sum d106b29303767527fc11214f1b325fb6 - 
Dies beinhaltet ein neues Zeilenzeichen zusammen mit dem Passwort: Dies ist möglicherweise das, was der Fragesteller möchte, aber wenn nicht, benötigen Sie `echo -n 'P @ ssword1' | md5sum`. Ich habe Anführungszeichen in das Passwort eingefügt, falls es Zeichen enthält, die von der Shell interpretiert werden. Ich habe einfache Anführungszeichen verwendet, um die Expansion zu unterbinden, wenn es ein "$" gibt. AFH vor 7 Jahren 9
Dies führt zu einem falschen Ergebnis, da Sie nicht 'P @ ssword1', sondern 'P @ ssword1' hashen`. Verwenden Sie `echo -n P @ ssword1 | stattdessen md5sum`. phihag vor 7 Jahren 7
@AFH Ich habe die Antwort aus deinem Kommentar erweitert. Unfundednut vor 7 Jahren 0
_ "Das erste Ergebnis gibt ein Newline-Zeichen mit dem Hash zurück." _ Nein, es wird ein Newline-Zeichen beim Generieren des Hashes berücksichtigt, was eine ganz andere Sache ist! Lightness Races in Orbit vor 7 Jahren 5
Meine Arbeit war unterbrochen. Richtig. Unfundednut vor 7 Jahren 0
Übrigens, ich habe gerade einen "Here-String" als Alternative zum Echo getestet. 'md5sum <<<' P @ ssword1'` gibt den ersten Hash (0a43 ...): Here-Strings enthalten die nachfolgende Zeile. Peter Cordes vor 7 Jahren 0
Ich denke, Sie sollten das ohne -n ​​entfernen, da es für manche Leute verwirrend sein kann Chris Koston vor 7 Jahren 0
11
Jonas Schäfer

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

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 Shells nach, wie dies gehandhabt wird.

Alternativ können Sie md5sumdirekt verwenden, indem Sie md5sumdas Kennwort eingeben und dann das Kennwort eingeben Ctrl+D. Treten Sie nicht Enterzwischen das Passwort und Ctrl+D, es sei denn, Sie möchten eine neue Zeile in den Hash einfügen.

Sie haben so gut angefangen (+1) ... aber nachdem Sie gesagt haben, dass das Schreiben des Flugzeugpassworts in eine Datei auch funktioniert (-1), '8-O' (wie viele Sicherheitslöcher es öffnet ...). Übrigens, wenn die Variable $ HISTCONTROL auf _ignorespace_ oder _ignoreboth_ gesetzt ist, werden alle mit einem Leerzeichen eingegebenen Befehle nicht in der Historie gespeichert. Es ist jedoch immer eine gute Idee, sie direkt zu testen. (+1 nochmal :-)) ... Hastur vor 7 Jahren 1
@Hastur Guter Punkt. Das Schreiben in eine Datei ist im Allgemeinen besser als das Verschütten des Kennworts in der Historie, da Sie die Verknüpfung der Datei einfach aufheben können (was je nach Konfiguration möglicherweise nicht mit der Historie funktioniert). Ich habe Shells gesehen, die die Historie beim Beenden (erneut) schreiben ). Es ist jedoch richtig, dass es nicht so einfach ist, das Passwort richtig in eine Datei zu schreiben, als einfach vim oder etwas laufen zu lassen (man würde zumindest die umask setzen wollen, und ich weiß nicht genau, ob dies Löcher hinterlässt). Ich habe das Teil aus der Antwort entfernt. Jonas Schäfer vor 7 Jahren 0
Ich bemerke deine Bearbeitung (aber ich habe nur _upvoted_ ich kann nicht zweimal, aber ich kann mir etwas anderes überlegen ...). Hastur vor 7 Jahren 0
8
OPSXCQ

Hier ist ein Beispiel mit openssl

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

Openssl implementiert mehrere verschiedene Hash-Algorithmen, falls Sie eines Tages einen anderen benötigen.

4
a CVn

Es scheint, als würde jeder die Verwendung vorschlagen echo- zumindest meistens dankenswerterweise mit -n, wodurch eines seiner Probleme gemindert wird (dass am Ende ein Zeilenumbruch erfolgt).

Ist echoaber nicht unbedingt konsistent. Es gibt eine Reihe von Verhaltensauffälligkeiten, die Sie beachten müssen, und die zwischen Systemen nicht kompatibel sind. Es ist besser, stattdessen zu verwendenprintf .

Daher sollten Sie verwenden

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

Mit printf, wenn Sie am Ende einen Zeilenumbruch wünschen, müssen Sie ihn explizit selbst hinzufügen:

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

Anstatt fragen zu müssen, es nicht zu bekommen (und zu hoffen, dass es echoauf dem System genauso funktioniert, läuft es zu einem späteren Zeitpunkt weiter):

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

Um den Punkt auf den Macken von demecho, den ich oben erwähnt habe, zu erweitern, hier ein paar:

  • Es funktioniert auf verschiedenen Systemen unterschiedlich. Viele moderne Systeme unterstützen -nzu sagen, echonicht die Ausgabe mit einem Newline zu beenden, aber einige vielleicht nicht. Und was ist, wenn Sie tatsächlich drucken möchten -n? Einige Implementierungen können sich je nach Einstellungen in der Shell oder Umgebung unterscheiden.
  • Bestimmte Zeichenfolgen (insbesondere Zeichen mit Backslash-Zeichen) werden auf besondere Weise behandelt. Es ist nicht völlig unvernünftig, diese Passwörter zu verwenden, und POSIX garantiert keine Garantie für das Verhalten von Echo (das Verhalten ist speziell undefiniert ), wenn das erste Argument -noder eines seiner Argumente umgekehrte Schrägstriche enthält.

Die Antworten auf die oben verlinkte Frage zur Verwendung von printf anstelle von Echo enthalten mehrere weitere sowie weitere Links zum Lesen, wenn Sie neugierig sind.

"Es (Echo) hat eine Reihe von Verhaltenswirren, an die Sie denken müssen." Können Sie das erweitern? DavidPostill vor 7 Jahren 0
@DavidPostill Ich habe etwas dazu hinzugefügt. Fühlst du, dass das besser ist? a CVn vor 7 Jahren 0
Perfekt :) Es war für meine eigene Ausbildung (ich wollte nicht andeuten, dass mit Ihrer Antwort etwas nicht stimmte). DavidPostill vor 7 Jahren 0
@DavidPostill Keine Sorgen; Ich versuche gern, meine Antworten so gut wie möglich zu machen, auch wenn sie nicht die am besten bewerteten sind. (Ich habe nicht erwartet, dass dies auch beim Schreiben eine große Aufmerksamkeit erregt hätte, aber es schien mir eine Antwort wert zu sein, in der erörtert wird, dass printf wahrscheinlich eine bessere Wahl ist als Echo, besonders für so etwas.) a CVn vor 7 Jahren 0
Das gilt auch für mich :) DavidPostill vor 7 Jahren 0
3
Wumpus Q. Wumbley

Die Frage schlägt mir etwas anderes vor, also der Vollständigkeit halber:

Es gibt eine MD5-basierte Salted-Kennwort-Hashmethode, die die ursprüngliche DES-basierte Verschlüsselung () ersetzt /etc/shadow. Es wurde jetzt durch neuere Dinge ersetzt, aber wenn Sie jemals "MD5-Passwort-Hashing" in freier Wildbahn vorfinden, kann dies eher auf ein einfaches MD5 Bezug nehmen.

Diese MD5-basierten Hashes sind durch das Präfix gekennzeichnet $1$und können mit berechnet werdenopenssl passwd -1

0
Aaron Franke

Sie können dies leicht mit echound tun md5sum:

 echo -n "password" | md5sum 
Ohne "-n" fügt das "echo" das Newline-Zeichen an die Ausgabe an, sodass der Hash falsch ist. Zum Beispiel für 'echo -n lolwut | md5sum` das Ergebnis ist `05a208028929fd77cfb5b08096a837df`, während für` echo lolwut | md5sum` ist `f291ceceddd9e13a0ab68cf1829ef583`. Ivan Kolmychek vor 7 Jahren 2