Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich eine einfache bidirektionale Verschlüsselung und Authentifizierung in PHP implementieren?

Wie kann ich eine einfache bidirektionale Verschlüsselung und Authentifizierung in PHP implementieren?

Mary-Kate Olsen
Freigeben: 2024-12-24 02:10:13
Original
250 Leute haben es durchsucht

How Can I Implement Simple Two-Way Encryption and Authentication in PHP?

Einfachste Zwei-Wege-Verschlüsselung mit PHP

Hintergrund

Achtung: Vermeiden Sie die Verschlüsselung von Passwörtern mit diesen Methoden; Verwenden Sie stattdessen Passwort-Hashing-Algorithmen für eine sichere Passwortspeicherung.

Portable Datenverschlüsselung in PHP

Wenn Sie PHP 5.4 oder höher verwenden und Codeportabilität wünschen, nutzen Sie eine vorhandene Bibliothek, die authentifizierte Verschlüsselung bietet. Openssl-Methoden wie openssl_encrypt() und openssl_decrypt() können verwendet werden, sobald Sie eine Verschlüsselungsmethode ausgewählt haben.

Verschlüsselung und Entschlüsselung

Erwägen Sie die Verwendung des Advanced Encryption Standard (AES) in CTR-Modus zur Verschlüsselung. Diese Methode bietet die beste Balance zwischen Sicherheit und Leistung. Konsultieren Sie openssl_get_cipher_methods() für eine Liste der unterstützten Methoden.

Einfacher Verschlüsselungs-/Entschlüsselungs-Wrapper mit OpenSSL

Die folgende PHP-Klasse bietet einen einfachen Verschlüsselungs-/Entschlüsselungs-Wrapper mit OpenSSL:

class UnsafeCrypto
{
    const METHOD = 'aes-256-ctr';

    public static function encrypt($message, $key, $encode = false)
    {
        // ...
        if ($encode) {
            return base64_encode($nonce.$ciphertext);
        }
        return $nonce.$ciphertext;
    }

    public static function decrypt($message, $key, $encoded = false)
    {
        // ...
        $plaintext = openssl_decrypt(
            $ciphertext,
            self::METHOD,
            $key,
            OPENSSL_RAW_DATA,
            $nonce
        );
        
        return $plaintext;
    }
}
Nach dem Login kopieren

Einfacher Authentifizierungs-Wrapper

Um die Sicherheit zu erhöhen, implementieren Sie die Authentifizierung für Überprüfen Sie die Integrität verschlüsselter Daten:

class SaferCrypto extends UnsafeCrypto
{
    const HASH_ALGO = 'sha256';

    public static function encrypt($message, $key, $encode = false)
    {
        // ...
        if ($encode) {
            return base64_encode($mac.$ciphertext);
        }
        // Prepend MAC to the ciphertext and return to caller
        return $mac.$ciphertext;
    }

    public static function decrypt($message, $key, $encoded = false)
    {
        // ...
        $calculated = hash_hmac(
            self::HASH_ALGO,
            $ciphertext,
            $authKey,
            true
        );
        
        if (!self::hashEquals($mac, $calculated)) {
            throw new Exception('Encryption failure');
        }
        
        // Pass to UnsafeCrypto::decrypt
        $plaintext = parent::decrypt($ciphertext, $encKey);
        
        return $plaintext;
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich eine einfache bidirektionale Verschlüsselung und Authentifizierung in PHP implementieren?. 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