Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich Passwörter mit PHP sicher verschlüsseln und entschlüsseln?

Wie kann ich Passwörter mit PHP sicher verschlüsseln und entschlüsseln?

Mary-Kate Olsen
Freigeben: 2024-12-28 10:05:10
Original
459 Leute haben es durchsucht

How Can I Securely Encrypt and Decrypt Passwords Using PHP?

Sicherer Umgang mit Passwörtern: Verschlüsselung und Entschlüsselung

Bei der Speicherung sensibler Daten wie Passwörter ist es wichtig, geeignete Sicherheitsmaßnahmen zu ergreifen. Während Hashing-Funktionen zur irreversiblen Sicherung von Passwörtern verwendet werden, kann es Fälle geben, in denen eine reversible Verschlüsselung gewünscht ist.

Trotz der Missverständnisse über Base64 als gültige Verschlüsselungsmethode bleibt es eine einfache Verschlüsselungstechnik. Stattdessen befassen wir uns mit einem sichereren Ansatz zum Verschlüsseln und Entschlüsseln von Passwörtern, bei dem ein einzigartiger Scramble erstellt wird, um die Daten vor und nach der Base64-Codierung zu ändern.

Um diese Methode zu implementieren, definieren wir einen Schlüssel („Passwort für (en/de)crypt“) und eine zu verschlüsselnde Zeichenfolge („string to be verschlüsselt“).

Verschlüsselung Prozess

$iv = mcrypt_create_iv(
    mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
    MCRYPT_DEV_URANDOM
);

$encrypted = base64_encode(
    $iv .
    mcrypt_encrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        $string,
        MCRYPT_MODE_CBC,
        $iv
    )
);
Nach dem Login kopieren

Dieser Code initiiert den Verschlüsselungsprozess, indem er einen Initialisierungsvektor (IV) erstellt und einen starken Hash-Algorithmus (SHA-256) verwendet, um den Verschlüsselungsschlüssel aus dem bereitgestellten Schlüssel zu generieren. Anschließend werden die Daten mit einem hochsicheren Verschlüsselungsalgorithmus (RIJNDAEL-128) im CBC-Modus verschlüsselt. Das verschlüsselte Ergebnis wird anschließend Base64-kodiert, um eine verschleierte Zeichenfolge zu erzeugen.

Entschlüsselungsprozess

$data = base64_decode($encrypted);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));

$decrypted = rtrim(
    mcrypt_decrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),
        MCRYPT_MODE_CBC,
        $iv
    ),
    ""
);
Nach dem Login kopieren

Der Entschlüsselungsprozess kehrt die Verschlüsselungssequenz um. Die Base64-kodierte Zeichenfolge wird dekodiert und die IV wird abgerufen. Der Verschlüsselungsschlüssel wird neu berechnet und die Daten werden mit dem IV und dem Originalschlüssel entschlüsselt. Abschließend werden alle nachgestellten Nullbytes entfernt, was zur ursprünglichen Klartextzeichenfolge führt.

Achtung: Es ist wichtig zu beachten, dass der bereitgestellte Code zwar effektiv zur Veranschaulichung des Verschlüsselungs-/Entschlüsselungsprozesses ist, dies aber auch ist In seiner jetzigen Form ist es nicht für den Produktionseinsatz gedacht. Es fehlen geeignete Authentifizierungsmechanismen und andere Sicherheitsmaßnahmen, die für den Schutz sensibler Daten unerlässlich sind. Verwenden Sie bei der Passwortverschlüsselung immer authentifizierte Verschlüsselungstechniken und orientieren Sie sich als Orientierungshilfe an etablierten Best Practices der Branche.

Das obige ist der detaillierte Inhalt vonWie kann ich Passwörter mit PHP sicher verschlüsseln und entschlüsseln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage