Aktueller Standort: Startseite> Neueste Artikel> So implementieren Sie den Blowfish -Verschlüsselungsalgorithmus ($ 2y $) für eine sichere Verschlüsselung mithilfe der Funktion von PHP von Crypt ()?

So implementieren Sie den Blowfish -Verschlüsselungsalgorithmus ($ 2y $) für eine sichere Verschlüsselung mithilfe der Funktion von PHP von Crypt ()?

M66 2025-06-23

In der modernen Entwicklung der Webanwendungen ist der sichere Speicher von Benutzerkennwörtern von entscheidender Bedeutung. Die integrierte Crypt () -Funktion von PHP unterstützt eine Vielzahl von Verschlüsselungsalgorithmen, einschließlich des Blowfish-Verschlüsselungsalgorithmus. Der Blowfish -Algorithmus wird für seine hohe Intensität und anpassbare Arbeitsfaktoren (Kosten) häufig verwendet. In diesem Artikel wird detailliert vorgestellt, wie PHPs Crypt () -Funktion verwendet werden, um Kennwörter mit dem Blowfish -Algorithmus sicher zu verschlüsseln (Identifier $ 2y $ ).

Was ist der Blowfish -Verschlüsselungsalgorithmus?

Blowfish ist ein symmetrischer Schlüsselverschlüsselungsalgorithmus, das speziell für ältere Verschlüsselungsalgorithmen entwickelt wurde. Für das Passworthashing bietet Blowfish gute, brütungssichere Crack-Funktionen mit seinem einstellbaren "Arbeitsfaktor". Je höher der Arbeitsfaktor, desto länger dauert es zur Berechnung der Verschlüsselung, wodurch die Sicherheit der Kennwort verbessert wird.

Die Crypt () -Funktion von PHP verwendet die $ 2y $ -Kennung, um das Blowfish -Hash -Format darzustellen, bei dem es sich um ein für PHP 5.3.7 und höher empfohlener Format handelt, das Sicherheitsprobleme in früheren Versionen vermeiden kann.

Blowfish -Verschlüsselung unter Verwendung von PHPs Crypt () -Funktion

1. Salz erzeugen

Das Salz des Blowfish-Algorithmus ist eine 22-Charakter-Schnur, die AZ , AZ , 0-9 , . / Insgesamt 64 Zeichen. Das Salzformat, das von PHPs Crypt () erforderlich ist, lautet wie folgt:

 $2y$ + Zwei Arbeitsfaktoren(cost) + $ + 22 etwas Salz

Zum Beispiel:

 $salt = '$2y$12$' . substr(strtr(base64_encode(random_bytes(16)), '+', '.'), 0, 22);

Hier ist 12 der Arbeitsfaktor, der 2^12 Hash -Berechnungen darstellt, was etwa 4096 Mal ist und nicht zu langsam ist.

2. Verschlüsseln Sie das Kennwort mithilfe von Crypt () -Funktion

 $password = 'your_password_here';
$hash = crypt($password, $salt);

Der zurückgegebene $ Hash ist eine vollständige Blowfish -Hash -Schnur, die direkt in die Datenbank gespeichert werden kann.

3. Überprüfen Sie das Passwort

Verwenden Sie beim Überprüfen des Passworts den ursprünglichen Hash als Salz, um Crypt () aufzurufen und die Ergebnisse zu vergleichen:

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

Vollständiger Beispielcode

 <?php

// Safes Salz erzeugen
function generate_blowfish_salt($cost = 12) {
    if ($cost < 4 || $cost > 31) {
        throw new InvalidArgumentException("Der Arbeitsfaktor muss sein4ankommen31zwischen");
    }
    $randomBytes = random_bytes(16);
    $base64Salt = substr(strtr(base64_encode($randomBytes), '+', '.'), 0, 22);
    return sprintf('$2y$%02d$%s', $cost, $base64Salt);
}

// Verschlüsselungskennwort
function encrypt_password($password, $cost = 12) {
    $salt = generate_blowfish_salt($cost);
    return crypt($password, $salt);
}

// Passwort überprüfen
function verify_password($password, $hash) {
    return crypt($password, $hash) === $hash;
}

// prüfen
$password = 'mypassword123';
$hash = encrypt_password($password);

echo "Passwort Hash: $hash\n";

if (verify_password('mypassword123', $hash)) {
    echo "Passwortüberprüfung erfolgreich!\n";
} else {
    echo "Passwortüberprüfung fehlgeschlagen!\n";
}
?>

Verwandte Links