Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan penyulitan dan penyahsulitan pakej termampat melalui PHP ZipArchive?

Bagaimana untuk melaksanakan penyulitan dan penyahsulitan pakej termampat melalui PHP ZipArchive?

WBOY
WBOYasal
2023-07-22 16:36:231559semak imbas

Bagaimana untuk melaksanakan penyulitan dan penyahsulitan pakej termampat melalui PHP ZipArchive?

Ikhtisar:
PHP ZipArchive ialah kelas yang berkuasa untuk mencipta, membuka dan memanipulasi fail mampat ZIP. Walaupun kelas ZipArchive sendiri tidak secara langsung menyediakan fungsi menyulitkan dan menyahsulit fail termampat ZIP, kami boleh menggunakan beberapa sambungan PHP untuk melaksanakan operasi penyulitan dan penyahsulitan pada pakej termampat, seperti sambungan openssl. Dalam artikel ini, kami akan memperkenalkan cara menggunakan kelas ZipArchive PHP dan sambungan openssl untuk melaksanakan operasi penyulitan dan penyahsulitan pada pakej termampat.

Langkah:

  1. Penyediaan:
    Pertama, pastikan kelas ZipArchive dan sambungan openssl didayakan dalam persekitaran PHP anda. Sambungan ini boleh didayakan dengan menyahkomen extension=zip dan extension=openssl dalam fail konfigurasi php.ini. extension=zipextension=openssl来启用这些扩展。
  2. 加密ZIP压缩文件:
    使用ZipArchive类创建一个新的ZIP压缩文件,并将需要加密的文件添加到该压缩文件中。然后,使用openssl扩展提供的加密函数对ZIP压缩文件进行加密。下面是一个示例代码片段:
<?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加密算法,密码为password,初始化向量为1234567890123456

Sulitkan fail mampat ZIP:
    Buat fail mampat ZIP baharu menggunakan kelas ZipArchive dan tambah fail yang perlu disulitkan pada fail termampat. Kemudian, fail mampat ZIP disulitkan menggunakan fungsi penyulitan yang disediakan oleh sambungan openssl. Berikut ialah coretan kod sampel:

  1. <?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 '打开压缩包失败。';
    }
    ?>
  2. Dalam kod sampel di atas, kami menggunakan algoritma penyulitan AES-128-CBC, kata laluan ialah kata laluan dan vektor permulaan ialah 1234567890123456. Anda boleh memilih algoritma penyulitan dan kata laluan yang berbeza untuk menyulitkan pakej termampat mengikut keperluan anda. . Berikut ialah coretan kod sampel:

rrreee

Dalam kod sampel di atas, kami menggunakan algoritma dan sifir AES-128-CBC yang sama yang digunakan untuk penyulitan untuk menyahsulit pakej termampat.

Nota:
  • Pastikan keselamatan dan kerahsiaan kata laluan anda apabila menggunakan kelas ZipArchive PHP dan sambungan openssl.
  • Dalam penggunaan sebenar, sila pilih algoritma penyulitan dan kata laluan yang lebih kompleks dan selamat mengikut keperluan anda.
  • Laluan penyahmampatan, kata laluan, vektor permulaan dan maklumat lain pakej termampat hendaklah diubah suai mengikut situasi sebenar.


Kesimpulan:

Melalui kelas ZipArchive PHP dan sambungan openssl, kami boleh melaksanakan operasi penyulitan dan penyahsulitan pada pakej termampat ZIP. Dengan cara ini, kami dapat memastikan keselamatan fail sensitif semasa penghantaran dan penyimpanan. Saya harap artikel ini akan membantu anda memahami dan menggunakan fungsi penyulitan dan penyahsulitan PHP ZipArchive. 🎜

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penyulitan dan penyahsulitan pakej termampat melalui PHP ZipArchive?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn