Ich lerne etwas über Linux-Passwortsicherheit (mehr Neugier als alles Nützliche) und verstehe, dass das echte Passwort gehasht und in der Schattenkennwortdatei gespeichert wird. Was ich nicht sicher bin und in meinem kurzen Googeln nicht finden konnte, ist, welche Codierung verwendet wird, um den Hash-Wert (und den Wert des Salzes) zu codieren. Es ist offensichtlich kein Hex und es ist offensichtlich Text, ausgenommen das :
Zeichen. Kann mir hier jemand sagen, was diese Kodierung ist?
Bearbeiten: Ich verstehe das Hashing (MD5, SHA-X), das Salz und den Hashing-Spezifizierer. Was ich suche, ist die Methode zum Konvertieren der Hash-Ergebnisse (ein Byte-Array (Byte [])) in die Zeichenfolge, die ich in der Datei sehe, dh die Codierung.
Antworten:
Im Fall von MD5 crypt () ist das Salt nur eine zufällige Zeichenfolge mit bis zu 8 Zeichen aus [a-zA-Z0-9./].
Das Salt und das Passwort werden dann zusammen gehasht, durch eine Verstärkungsfunktion geleitet und dann mit einer Variante auf Base64 codiert:
quelle
Wenn Sie nur wissen möchten, wie das Kennwort codiert ist, verwendet crypt () eine spezielle Codierung vom Typ Base64.
Die Base64-Codierung verwendet den folgenden Zeichensatz: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + /
Während die crypt () - Codierung diesen Zeichensatz verwendet: ./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Im Gegensatz zu Base64 gibt es auch keine "=" Auffüllung.
Andererseits erzeugen die crypt () - Implementierungen von MD5, SHA-X usw. mehr als nur ein zufälliges Salt, führen die Hash-Funktion aus und codieren sie mit der vorherigen Codierung.
Ich empfehle, diese beiden großartigen Beiträge zu lesen: "Passwort-Hashing mit MD5-Krypta in Bezug auf MD5" und "Implementierung von SHA512-Krypta gegen MD5-Krypta" , um eine vollständigere Erklärung zu erhalten.
quelle
Der erste Teil des Hash zwischen den $ gibt an, welcher Algorithmus verwendet wird.
Unter http://en.wikipedia.org/wiki/Crypt_%28Unix%29 finden Sie eine Liste der Bedeutung der verschiedenen Werte.
quelle
Suchen Sie nach dem verwendeten Algorithmus?
Traditionell verwendeten Unix- und frühe Linux-Varianten ein geschwächtes DES, das auf maximal 8 Zeichen des Passworts basiert. Die meisten modernen Linux-Installationen verwenden MD5-Hashes für die Kennwörter und einige unterstützen SHA. Darüber hinaus wurde eine modularere Unterstützung für zusätzliche Algorithmen gezeigt, einschließlich Blowfish. Die von den meisten Linux-Versionen verwendete GNU libc unterstützt DES, MD5 und SHA und bietet Ihnen einige Optionen.
Der spezifische Typ des verwendeten Hash-Algorithmus wird als Anfang des Kennworts als $ DIGIT $ angegeben. Zum Beispiel ist $ 1 $ MD5.
Weitere Informationen erhalten Sie bei Wikipedia (siehe die Seite zu Crypt_ (Unix) ) oder bei Google für "Crypt Unix" oder "Crypt Linux".
quelle