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.
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.
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'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.
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'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.
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.