Aktueller Standort: Startseite> Neueste Artikel> So wählen Sie das entsprechende Algorithmus und das Salzwertformat für Crypt ()

So wählen Sie das entsprechende Algorithmus und das Salzwertformat für Crypt ()

M66 2025-05-20

In PHP ist die Crypt () -Funktion eine herkömmliche Methode zum Verschlingen von Kennwörtern. Es unterstützt mehrere Verschlüsselungsalgorithmen und ermöglicht spezifische Verschlüsselungsmechanismen, indem Salzwerte in verschiedenen Formaten bestehen. Obwohl in den letzten Jahren modernere APIs mit Passwort -Hashing -APIs (z. B. password_hash () ) empfohlen wurden, wird Crypt () in einigen alten Systemen immer noch häufig verwendet. Daher ist das Verständnis, wie das geeignete Algorithmus und das Salzwertformat für die Funktion "Crypt () ausgewählt werden sollen, der Schlüssel zur Gewährleistung der Sicherheits- und Systemkompatibilität.

1. unterstützte Verschlüsselungsalgorithmen und Salzwertformate

Die Crypt () -Funktion verwendet den Algorithmus, der verwendet wird, um das Salzwertpräfix zu identifizieren. Im Folgenden finden Sie Mainstream -Algorithmen und ihre entsprechenden Salzwertformate:

  • DES (traditioneller Algorithmus)

    • Salzwertformat: 2 Zeichen (zum Beispiel: "xy")

    • Sicherheit: Sehr niedrig, nicht mehr empfohlen.

  • MD5

    • Salzwertformat: $ 1 $ + bis zu 8 Zeichen (zum Beispiel: $ 1 $ ABC12345 )

    • Sicherheit: Schwach, leicht zu brutal erzwungen zu werden.

  • Blowfish

    • Salzwertformat: $ 2y $ + 2-Bit Kostenfaktor + 22-Bit-Basis64-Codierung (zum Beispiel: $ 2y $ 10 $ ABCDEFGHIJKLMNOPQRSTUU )

    • Sicherheit: hoch, weit verbreitet.

    • Kompatibilität: Es wird empfohlen , $ 2y $ anstelle von 2 AA -$ zu verwenden, da $ 2y $ historische Sicherheitsprobleme behebt.

  • SHA-256 und SHA-512 (GLIBC)

    • Salzwertformat:

      • SHA-256: $ 5 $ + Optionale Runden Parameter + Salz (zum Beispiel: $ 5 $ Runden = 5000 $ MysaltValue )

      • SHA-512: $ 6 $ + optionale Runden Parameter + Salz (zum Beispiel: $ 6 $ MysaltValue )

    • Sicherheit: Hoch

    • Kompatibilität: verfügbar auf Plattformen, die von GLIBC (wie den meisten Linux -Systemen) unterstützt werden, jedoch nicht auf Windows.

2. So wählen Sie den richtigen Algorithmus aus

Bei der Auswahl eines Verschlüsselungsalgorithmus sollten die folgenden Punkte berücksichtigt werden:

  • Sicherheitsanforderungen : Wenn das System Brute Force Cracking aus modernen Hardware widersetzen muss, wird empfohlen, Blowfish ( $ 2y $ ) oder SHA-512 ( $ 6 $ ) zu verwenden.

  • Übergreifende Kompatibilität : Wenn das System zwischen Linux und Windows migriert werden muss, sollte zuerst der Blowfish-Algorithmus verwendet werden, da die SHA-Variante unter Windows nicht kompatibel ist.

  • Berechnungskostenkontrolle : Blowfish unterstützt die Kostenparameter (2–31) und kann entsprechend der Serverleistung angepasst werden. Zum Beispiel bedeutet $ 2y $ 12 $ 2^12 Iterationen.

3.. Best Practices für die Erzeugung von Salzwert

Der Salzwert wird verwendet, um zu verhindern, dass dasselbe Passwort denselben Hash erzeugt. Daher müssen die folgenden Eigenschaften sein:

  • Einzigartigkeit : Das Passwort jedes Benutzers sollte ein anderes Salz verwenden.

  • Unvorhersehbarkeit : Salz sollte unter Verwendung einer sicheren Pseudo-Random-Quelle erzeugt werden.

Probencode, verwendete Blowfish, um einen Hash mit Salz zu generieren:

 function generateSalt($cost = 10) {
    $salt = substr(strtr(base64_encode(random_bytes(16)), '+', '.'), 0, 22);
    return sprintf('$2y$%02d$%s$', $cost, $salt);
}

$password = 'MySecurePassword123';
$salt = generateSalt(12);
$hash = crypt($password, $salt);

echo "Das verschlüsselte Passwort ist: " . $hash;

4. Methoden zur Überprüfung des Passworts

Bei der Verwendung von CryPT () für die Passwortüberprüfung sollte die Benutzereingabe zusammen mit dem ursprünglichen Hash an Crypt () übergeben werden, z. B.:

 function verifyPassword($password, $hash) {
    return crypt($password, $hash) === $hash;
}

Dies stellt sicher, dass der Überprüfungsprozess denselben Algorithmus und Salzwerte verwendet.

5. Vorsichtsmaßnahmen und Empfehlungen

  • Geben Sie keine Zeichenfolgen mit unbekannten Salzwerten manuell an und verwenden Sie die vom Programm automatisch generierten sicheren Salzwerte.

  • Vermeiden Sie die Verwendung von DES oder MD5, auch wenn sie noch unterstützt werden.

  • Bevorzugte Migration zu password_hash () und password_verify () werden diese Funktionen von PHP verwaltet und verarbeiten automatisch Algorithmen und Salzwerte, was den modernen Angriffen besser widerstehen kann.

6. Beispielanwendungsszenarien

Ein altes System spart Passwort, wenn ein Benutzer registriert:

 $password = $_POST['password'];
$salt = generateSalt(12);
$hashed = crypt($password, $salt);
// halten $hashed Gehen Sie zur Datenbank

Überprüfen Sie das Passwort, wenn Sie sich anmelden:

 $input = $_POST['password'];
$stored_hash = getPasswordFromDatabase(); // Angenommen, es wurde aus der Datenbank abgerufen

if (verifyPassword($input, $stored_hash)) {
    echo "Erfolgreich anmelden";
} else {
    echo "Fehlerkennwort";
}

7. Zusammenfassung

Obwohl die Crypt () -Funktion nicht mehr das bevorzugte Werkzeug im modernen PHP ist, ist es dennoch wichtig, ihre Algorithmen und Salzwertmechanismen zu verstehen, insbesondere bei der Aufrechterhaltung alter Systeme. Es wird empfohlen, den Algorithmus zum Blowfish ( 2y $ ) mit sicher generierten Salzwerten zu verwenden, um ein Gleichgewicht zwischen Kompatibilität und Sicherheit zu gewährleisten. Es wird auch empfohlen, das System auf lange Sicht auf password_hash () zu übergehen, eine modernere und sichere Lösung.