Zwei-Wege-Verschlüsselung: Abrufbare Passwörter speichern
Einführung
Passwörter sicher speichern und gleichzeitig zulassen Es ist eine Herausforderung, wenn Benutzer sie abrufen können. Symmetrische Verschlüsselung kann diesem Bedarf gerecht werden, aber das Verständnis der Nuancen der Implementierung ist von entscheidender Bedeutung.
Verschlüsselung und Entschlüsselung in PHP
Um Passwörter in PHP zu ver- und entschlüsseln, sollten Sie die Verwendung von in Betracht ziehen mcrypt- oder OpenSSL-Bibliotheken. Hier ist ein Beispiel für die Verwendung von mcrypt:
function encrypt($password, $key) { $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM); return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv); } function decrypt($encryptedPassword, $key) { $iv = substr($encryptedPassword, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); $password = substr($encryptedPassword, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv); }
Sicherster Algorithmus
Der beste Verschlüsselungsalgorithmus hängt vom jeweiligen Anwendungsfall ab. Für die Speicherung von Passwörtern gilt AES-256 (Rijndael) im CBC- oder CTR-Modus im Allgemeinen als robust.
Speicherung privater Schlüssel
Die sichere Speicherung des privaten Schlüssels ist von entscheidender Bedeutung. Ein empfohlener Ansatz besteht darin, eine Kombination aus dem Passwort des Benutzers und einem serverseitigen Salt zu verwenden. In PHP kann dies erreicht werden durch:
$salt = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM); $key = hash('sha256', $userPassword . $salt);
Privater Schlüssel als Benutzereingabe
Wenn Benutzer vertrauenswürdig sind, bitten Sie sie, beim Abrufen den privaten Schlüssel anzugeben Passwörter können zusätzliche Sicherheit bieten. Dies schützt vor serverseitigen Sicherheitsverletzungen.
Sicherheitsrisiken
Verschlüsselte Passwörter können anfällig sein für:
Abwehrstrategien
Um diese Risiken zu mindern, implementieren Sie Folgendes:
Das obige ist der detaillierte Inhalt vonWie kann ich Passwörter mithilfe der Zwei-Wege-Verschlüsselung in PHP sicher speichern und abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!