Aktueller Standort: Startseite> Neueste Artikel> So verschlüsseln Sie das Passwort mit Crypt ()

So verschlüsseln Sie das Passwort mit Crypt ()

M66 2025-05-30

In der modernen Entwicklung der Webanwendungen ist der sichere Speicher von Benutzerkennwörtern von entscheidender Bedeutung. PHP bietet eine Vielzahl von Kennwortverschlüsselungsmethoden, unter denen die Crypt () -Funktion ein flexibles und leistungsstarkes Verschlüsselungswerkzeug ist. In diesem Artikel wird die sicheren Verschlüsselung und Überprüfung von Benutzerkennwörtern mithilfe von PHP -Funktion von PHP vorgestellt und erläutert, wie gemeinsame Sicherheitsfallen vermieden werden.

1. Verstehen Sie die Crypt () -Funktion

Crypt () ist eine Kennwort -Hash -Funktion, die mehrere Verschlüsselungsalgorithmen unterstützt. Der spezifische Algorithmus hängt von dem "Salz" ab, den Sie eingeben. Verschiedene Algorithmen haben unterschiedliche Salzformate, wie SHA-256 , SHA-512 usw. Die angemessene Verwendung von Crypt () kann starke Passwort-Hashes erzeugen und die Schwierigkeit des Risses erhöhen.

 string crypt(string $password, string $salt);
  • $ password ist das vom Benutzer eingegebene Klartextkennwort.

  • $ salt wird verwendet, um den Verschlüsselungsalgorithmus und den zufälligen Salzwert anzugeben, um sicherzustellen, dass die Ergebnisse jeder Verschlüsselung unterschiedlich sind.

2. Erzeugen Sie sicher Salzwerte

Die Funktion des Salzes besteht darin, Regenbogentischangriffe zu verhindern, und jedes Passwort sollte einen eindeutigen Salzwert haben. Für moderne Algorithmen sollte Salz Algorithmusidentifikation, Anzahl der Iterationen und zufälligen Zeichen enthalten.

Das folgende Beispiel erzeugt ein Salz basierend auf dem SHA-512-Algorithmus:

 function generateSalt($length = 16) {
    $randomBytes = random_bytes($length);
    return '$6$rounds=5000$' . substr(strtr(base64_encode($randomBytes), '+', '.'), 0, 16) . '$';
}
  • $ 6 $ bedeutet mit SHA-512.

  • Runden = 5000 kontrolliert die Anzahl der Hash-Iterationen, desto größer ist es sicherer, aber zeitaufwändig.

  • Zufällige Saiten sorgen für die Einzigartigkeit von Salz.

3.. Verschlüsseln Sie das Passwort mit Crypt ()

Wenn Sie das oben generierte Salz kombinieren, können Sie das Passwort wie folgt verschlüsseln:

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

$ Hash ist die in der Datenbank gespeicherte Passwort -Hash -Zeichenfolge.

4. Überprüfen Sie das Benutzerkennwort

Während der Überprüfung können Sie das Kennwort und das Hash nicht direkt vergleichen, sondern Crypt () mit dem Benutzer -Eingabegwort aufrufen und den gespeicherten Hash als Salz übergeben. Die Funktion extrahiert automatisch das Salz und verschlüsselt das Kennwort:

 function verifyPassword($inputPassword, $storedHash) {
    $hash = crypt($inputPassword, $storedHash);
    return hash_equals($hash, $storedHash);
}

Verwenden Sie Hash_equals (), um Zeitangriffe zu verhindern und relativ sicher zu gewährleisten.

5. Vollständiges Beispiel

 <?php
// Eine Salzfunktion erzeugen
function generateSalt($length = 16) {
    $randomBytes = random_bytes($length);
    return '$6$rounds=5000$' . substr(strtr(base64_encode($randomBytes), '+', '.'), 0, 16) . '$';
}

// Verschlüsseltes Passwort bei der Registrierung
function encryptPassword($password) {
    $salt = generateSalt();
    return crypt($password, $salt);
}

// Überprüfen Sie das Passwort, wenn Sie sich anmelden
function verifyPassword($inputPassword, $storedHash) {
    $hash = crypt($inputPassword, $storedHash);
    return hash_equals($hash, $storedHash);
}

// Beispiel
$userPassword = 'MySecurePass123';
$storedHash = encryptPassword($userPassword);

echo "Verschlüsselter Hash: " . $storedHash . "\n";

$inputPassword = 'MySecurePass123';
if (verifyPassword($inputPassword, $storedHash)) {
    echo "Passwortüberprüfung erfolgreich!";
} else {
    echo "Fehlerkennwort!";
}
?>

6. Zusätzliche Ratschläge

  • Versuchen Sie, Passwort_hash () und password_verify () von PHP 7.2+ zu verwenden , die modernere und sichere Algorithmen zusammenfassen. Wenn Sie jedoch aus besonderen Gründen Crypt () verwenden müssen, lesen Sie bitte die obige Methode.

  • Aktualisieren Sie regelmäßig die Kennwort -Hashing -Strategie, um die Anzahl der Iterationen zu erhöhen.

  • Die in der Datenbank gespeicherte Hash -Saite enthält Salz- und Algorithmusinformationen, und es müssen kein Salz separat gespeichert werden.