ホームページ >バックエンド開発 >PHPチュートリアル >PHP で OpenSSL を使用してファイルを暗号化および復号化するにはどうすればよいですか?

PHP で OpenSSL を使用してファイルを暗号化および復号化するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-17 02:57:03262ブラウズ

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

MCrypt を使用したファイルの暗号化と復号化

Mcrypt ライブラリは、PHP での暗号化および復号化操作のための関数を提供します。ファイルの暗号化と復号化にこれを使用する方法の例を次に示します。

// 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);
    }
}

重要な注意事項:

  • MCrypt は古いライブラリであり、現在は廃止されています。使用することをお勧めします。 OpenSSL や Libsodium など、より新しく安全な代替手段の使用を検討してください。
  • 暗号化/復号化キーは安全に生成され、機密に保持される必要があります。
  • 初期化ベクター (IV) は、同じ平文と鍵に対して毎回一意の暗号文。

以上がPHP で OpenSSL を使用してファイルを暗号化および復号化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。