Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Dateien mit OpenSSL in PHP verschlüsseln und entschlüsseln?

Wie kann ich Dateien mit OpenSSL in PHP verschlüsseln und entschlüsseln?

Susan Sarandon
Susan SarandonOriginal
2024-11-17 02:57:03264Durchsuche

How Can I Encrypt and Decrypt Files Using OpenSSL in PHP?

Dateien mit MCrypt verschlüsseln und entschlüsseln

Die Mcrypt-Bibliothek bietet Funktionen für Ver- und Entschlüsselungsvorgänge in PHP. Hier ist ein Beispiel für die Verwendung zum Verschlüsseln und Entschlüsseln von Dateien:

// ENCRYPT FILE
function encryptFile() {
    $key = generateKey(); // Function to generate a secure encryption key
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-128-cbc')); // Generate a random initialization vector

    $plaintext = file_get_contents(PATH . '/ftpd/' . $file);
    $encrypted = openssl_encrypt($plaintext, 'aes-128-cbc', $key, OPENSSL_RAW_DATA, $iv);

    $encryptedFile = fopen(PATH . '/encrypted/' . $file . '.txt', 'w');
    fwrite($encryptedFile, $iv . $encrypted);
    fclose($encryptedFile);

    unlink(PATH . '/ftpd/' . $file);
}

// DECRYPT FILE
function decryptFile() {
    $key = generateKey(); // Function to generate the same encryption key used in encryption

    if ($handle = opendir(PATH . '/encrypted')) {
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
                $encryptedFile = fopen(PATH . '/encrypted/' . $file, 'r');
                $encryptedData = fread($encryptedFile, filesize(PATH . '/encrypted/' . $file));

                $iv = substr($encryptedData, 0, openssl_cipher_iv_length('aes-128-cbc'));
                $decrypted = openssl_decrypt(substr($encryptedData, openssl_cipher_iv_length('aes-128-cbc')), 'aes-128-cbc', $key, OPENSSL_RAW_DATA, $iv);

                $decryptedFile = fopen(PATH . '/decrypted/' . $file, 'w');
                fwrite($decryptedFile, $decrypted);
                fclose($decryptedFile);

                // unlink(PATH . '/encrypted/' . $file);
            }
        }
        closedir($handle);
    }
}

Wichtige Hinweise:

  • MCrypt ist eine veraltete Bibliothek und nicht mehr zur Verwendung empfohlen. Erwägen Sie die Verwendung neuerer und sichererer Alternativen wie OpenSSL oder Libsodium.
  • Der Verschlüsselungs-/Entschlüsselungsschlüssel muss sicher generiert und vertraulich behandelt werden.
  • Initialisierungsvektoren (IVs) bieten zusätzliche Sicherheit, indem sie die Chiffretext jedes Mal eindeutig für denselben Klartext und Schlüssel.

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

Stellungnahme:
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