Position actuelle: Accueil> Derniers articles> Tutoriel de mise en œuvre complet sur le chiffre d'affaires et le décryptage du package de compression Ziparchive PHP

Tutoriel de mise en œuvre complet sur le chiffre d'affaires et le décryptage du package de compression Ziparchive PHP

M66 2025-07-28

PHP Ziparchive et OpenSSL Extensions Implémentez le cryptage et le déchiffrement du package de compression

La classe Ziparchive dans PHP est utilisée pour créer et manipuler des fichiers compressés ZIP. Bien que Ziparchive lui-même ne prenne pas directement en charge la fonction de chiffrement, combinée avec l'extension OpenSSL, nous pouvons implémenter le traitement du chiffrement et du décryptage des packages compressés pour améliorer la sécurité des fichiers.

Préparation environnementale

Assurez-vous que les extensions ziparchives et OpenSSL sont activées dans un environnement PHP, et vous pouvez activer Extension = Zip et Extension = OpenSSL dans php.ini.

Processus de chiffrement du pack de compression

Tout d'abord, utilisez Ziparchive pour créer un fichier zip et ajoutez le fichier cible au package compressé. Le contenu de fichier compressé est ensuite chiffré via la fonction de chiffrement d'OpenSSL. L'exemple de code est le suivant:

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

if ($zip->open($zipname, ZipArchive::CREATE) === TRUE) {
    // Ajouter un fichier
    $zip->addFile('data.txt', 'data.txt');
    $zip->close();

    // Lisez les données de paquets compressés et cryptez-les
    $zipdata = file_get_contents($zipname);
    $encryptedzip = openssl_encrypt($zipdata, 'AES-128-CBC', 'password', OPENSSL_RAW_DATA, '1234567890123456');
    file_put_contents($zipname, $encryptedzip);

    echo 'Le package comprimé est crypté。';
} else {
    echo 'Échec de la création d&#39;un package compressé。';
}
?>

Dans l'exemple ci-dessus, l'algorithme AES-128-CBC est utilisé, le mot de passe est le mot de passe et le vecteur d'initialisation est 1234567890123456 . Vous pouvez ajuster l'algorithme de chiffrement et la clé au besoin.

Processus de décryptage du package de compression

Lors du décryptage, utilisez la fonction de décryptage de l'OpenSSL pour restaurer les données de paquets compressés, puis utilisez Ziparchive pour décompresser. L'exemple de code est le suivant:

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

// Lire le contenu du package comprimé chiffré
$encryptedzip = file_get_contents($zipname);

// Décryptage
$decryptedzip = openssl_decrypt($encryptedzip, 'AES-128-CBC', 'password', OPENSSL_RAW_DATA, '1234567890123456');
file_put_contents($zipname, $decryptedzip);

// 打开Décryptage后的压缩包并解压
$zip = new ZipArchive();
if ($zip->open($zipname) === TRUE) {
    $zip->extractTo('unzip/');
    $zip->close();
    echo '压缩包已Décryptage并解压缩。';
} else {
    echo 'Échec d&#39;ouvrir le package compressé。';
}
?>

Le même algorithme et les mêmes clés sont utilisés dans l'étape de décryptage comme lorsqu'ils sont chiffrés pour garantir que les données sont récupérées correctement.

Choses à noter

  • Veuillez vous assurer que le mot de passe de chiffrement et le vecteur d'initialisation sont sûrs pour éviter les fuites.
  • Sélectionnez les algorithmes de chiffrement appropriés et la force du mot de passe en fonction des besoins réels pour améliorer la sécurité.
  • Le chemin de décompression, le mot de passe et le vecteur d'initialisation doivent être ajustés en fonction des exigences spécifiques du projet.

Résumer

En combinant la classe ziparchive de PHP et l'extension OpenSSL, le chiffrement et le déchiffrement des fichiers zip peuvent être réalisés efficacement, améliorant la sécurité des fichiers pendant la transmission et le stockage. J'espère que les exemples et les instructions de cet article seront utiles pour que vous appliquant cette fonctionnalité dans votre projet.