Aktueller Standort: Startseite> Neueste Artikel> Speichern von Crypt () im Datenbankverschlüsselungskennwort speichern

Speichern von Crypt () im Datenbankverschlüsselungskennwort speichern

M66 2025-06-02

In der Webentwicklung ist der sichere Speicher von Benutzerkennwörtern von entscheidender Bedeutung. Obwohl es in PHP mehrere Verschlüsselungsmethoden gibt, die zum Kennwortschutz verwendet werden können, ist die Crypt () -Funktion immer noch ein klassisches und effektives Tool. Es ermöglicht Entwicklern, verschiedene Hashing -Algorithmen wie Blowfish zu verwenden, um irreversible verschlüsselte Saiten zu erzeugen. In diesem Artikel wird erläutert, wie die Funktion Crypt () mit der Datenbank kombiniert wird, um einen sicheren Speicherkennwortspeicher zu erzielen.

1. Verstehen Sie die grundlegende Verwendung von Crypt () -Funktion

PHPs Crypt () -Funktion wird zur Einwegverschlüsselung verwendet, die zwei Parameter akzeptiert:

 string crypt ( string $string , string $salt )
  • $ string ist die ursprüngliche Zeichenfolge, die verschlüsselt wird (normalerweise ein Passwort)

  • $ salt ist eine Schnur, die das Verschlüsselungsergebnis beeinflusst. Unterschiedliche Salze erzeugen unterschiedliche Verschlüsselungsergebnisse.

Um den Blowfish -Algorithmus zu verschlüsseln, müssen Sie beispielsweise Salz formatieren:

 $salt = '$2y$10$' . bin2hex(random_bytes(11));
$hashed_password = crypt('user_password', $salt);

$ 2y $ 10 $ bedeutet den Blowfish -Algorithmus und 10 Verschlüsselungsrunden.

2. Schließen Sie eine Verbindung zur Datenbank her und speichern Sie das verschlüsselte Passwort

Um das verschlüsselte Passwort in die Datenbank zu speichern, ist eine Benutzertabelle erforderlich. Hier ist eine einfache Benutzerstruktur der Benutzertabelle:

 CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL
);

Verwenden Sie dann PHP, um eine Verbindung zur Datenbank herzustellen und Benutzerdaten einzufügen:

 <?php
$pdo = new PDO("mysql:host=localhost;dbname=testdb;charset=utf8", "dbuser", "dbpass");

$username = 'testuser';
$password = 'mypassword';

// erzeugensaltUnd verschlüsseln das Passwort
$salt = '$2y$10$' . bin2hex(random_bytes(11));
$hashed_password = crypt($password, $salt);

// In die Datenbank einfügen
$stmt = $pdo->prepare("INSERT INTO users (username, password) VALUES (:username, :password)");
$stmt->execute([
    ':username' => $username,
    ':password' => $hashed_password
]);
?>

3.. Überprüfen Sie das Benutzerkennwort

Wenn Sie sich anmelden, können Sie das Klartextkennwort nicht einfach vergleichen. Wir müssen die Crypt () -Funktion erneut mit dem gespeicherten verschlüsselten Passwort in der Benutzertabelle als Salz verwenden.

 <?php
$input_password = 'mypassword';
$username = 'testuser';

$stmt = $pdo->prepare("SELECT password FROM users WHERE username = :username");
$stmt->execute([':username' => $username]);
$stored_hash = $stmt->fetchColumn();

if (crypt($input_password, $stored_hash) === $stored_hash) {
    echo "Passwortüberprüfung erfolgreich。";
} else {
    echo "Fehlerkennwort。";
}
?>

4.. Ergänzende Vorschläge für Sicherheitszahlen

Obwohl die Crypt () -Funktion sicher ist, wurde sie nach und nach durch password_hash () und password_verify () ersetzt. Crypt () eignet sich besser für Szenarien, in denen Rückwärtskompatibilität mit alten Systemen erforderlich ist.

Achten Sie jedoch darauf, dass Sie bei der Verwendung von Crypt () aufmerksam sind:

  1. Verwenden Sie immer starke zufällige Salze und vermeiden Sie es mit festen Werten.

  2. Steuern Sie die Anzahl der Verschlüsselungsrunden (z. B. 10 $ 2y $ 10 $ ), um Brute Force Cracking -Kosten zu erhöhen.

  3. Verwenden Sie HTTPS, um das Front-End und das Back-End zu verbinden, um zu verhindern, dass das Passwort während der Übertragung abgefangen wird.

  4. Vermeiden Sie es, sensible Daten in URLs zu übergeben, zum Beispiel: