現在の位置: ホーム> 最新記事一覧> PHP Ziparchive圧縮パッケージの暗号化と復号化に関する完全な実装チュートリアル

PHP Ziparchive圧縮パッケージの暗号化と復号化に関する完全な実装チュートリアル

M66 2025-07-28

PHP ZiparchiveおよびOpenSSL拡張機能は、圧縮パッケージの暗号化と復号化を実装します

PHPのZiparchiveクラスは、ZIP圧縮ファイルの作成と操作に使用されます。 Ziparchive自体は、OpenSSL拡張機能と組み合わせて暗号化機能を直接サポートしていませんが、圧縮パッケージの暗号化と復号化処理を実装してファイルセキュリティを改善できます。

環境の準備

ZiparchiveおよびOpenSSL拡張機能がPHP環境で有効になっていることを確認し、PHP.iniで拡張= ZIPおよび拡張= OpenSSLを有効にすることができます。

圧縮パッケージ暗号化プロセス

まず、ziparchiveを使用してzipファイルを作成し、ターゲットファイルを圧縮パッケージに追加します。圧縮されたファイルコンテンツは、OpenSSLの暗号化関数を介して暗号化されます。サンプルコードは次のとおりです。

 <?php
$zip = new ZipArchive();
$zipname = 'encrypted.zip';

if ($zip->open($zipname, ZipArchive::CREATE) === TRUE) {
    // ファイルを追加します
    $zip->addFile('data.txt', 'data.txt');
    $zip->close();

    // 圧縮されたパケットデータを読んで暗号化します
    $zipdata = file_get_contents($zipname);
    $encryptedzip = openssl_encrypt($zipdata, 'AES-128-CBC', 'password', OPENSSL_RAW_DATA, '1234567890123456');
    file_put_contents($zipname, $encryptedzip);

    echo '圧縮パッケージは暗号化されています。';
} else {
    echo '圧縮パッケージの作成に失敗しました。';
}
?>

上記の例では、AES-128-CBCアルゴリズムが使用され、パスワードはパスワード、初期化ベクトルは1234567890123456です。必要に応じて、暗号化アルゴリズムとキーを調整できます。

圧縮パッケージの復号化プロセス

復号化するときは、OpenSSLの復号化関数を使用して圧縮パケットデータを復元し、Ziparchiveを使用して減圧します。サンプルコードは次のとおりです。

 <?php
$zipname = 'encrypted.zip';

// 暗号化された圧縮パッケージの内容を読み取ります
$encryptedzip = file_get_contents($zipname);

// 復号化
$decryptedzip = openssl_decrypt($encryptedzip, 'AES-128-CBC', 'password', OPENSSL_RAW_DATA, '1234567890123456');
file_put_contents($zipname, $decryptedzip);

// 打开復号化后的压缩包并解压
$zip = new ZipArchive();
if ($zip->open($zipname) === TRUE) {
    $zip->extractTo('unzip/');
    $zip->close();
    echo '压缩包已復号化并解压缩。';
} else {
    echo '圧縮パッケージを開くことができませんでした。';
}
?>

同じアルゴリズムとキーは、データが正しく回復されるように暗号化されたときのように、復号化ステップで使用されます。

注意すべきこと

  • 暗号化のパスワードと初期化ベクトルが漏れを避けるために安全であることを確認してください。
  • セキュリティを改善するための実際のニーズに応じて、適切な暗号化アルゴリズムとパスワードの強さを選択します。
  • 減圧パス、パスワード、および初期化ベクトルは、特定のプロジェクト要件に従って調整する必要があります。

要約します

PHPのZiparchiveクラスとOpenSSL拡張を組み合わせることにより、ZIPファイルの暗号化と復号化を効果的に実現し、送信中およびストレージ中のファイルのセキュリティを強化します。この記事の例と指示が、この機能をプロジェクトに適用するのに役立つことを願っています。