Die Ziparchive -Klasse in PHP wird zum Erstellen und Manipulieren von Zip -komprimierten Dateien verwendet. Obwohl Ziparchive selbst die Verschlüsselungsfunktion in Kombination mit der OpenSSL -Erweiterung nicht direkt unterstützt, können wir die Verschlüsselungs- und Entschlüsselungsverarbeitung komprimierter Pakete implementieren, um die Dateisicherheit zu verbessern.
Stellen Sie sicher, dass die Ziparchive- und OpenSSL -Erweiterungen in der PHP -Umgebung aktiviert sind, und Sie können Extension = ZIP und Extension = OpenSL in php.ini aktivieren.
Verwenden Sie zunächst Ziparchive, um eine ZIP -Datei zu erstellen und die Zieldatei zum komprimierten Paket hinzuzufügen. Der komprimierte Dateiinhalt wird dann durch die Verschlüsselungsfunktion von OpenSSL verschlüsselt. Der Beispielcode lautet wie folgt:
<?php
$zip = new ZipArchive();
$zipname = 'encrypted.zip';
if ($zip->open($zipname, ZipArchive::CREATE) === TRUE) {
// Fügen Sie eine Datei hinzu
$zip->addFile('data.txt', 'data.txt');
$zip->close();
// Lesen Sie die komprimierten Paketdaten und verschlüsseln Sie sie
$zipdata = file_get_contents($zipname);
$encryptedzip = openssl_encrypt($zipdata, 'AES-128-CBC', 'password', OPENSSL_RAW_DATA, '1234567890123456');
file_put_contents($zipname, $encryptedzip);
echo 'Das komprimierte Paket ist verschlüsselt。';
} else {
echo 'Es wurde kein komprimiertes Paket erstellt。';
}
?>
Im obigen Beispiel wird der AES-128-CBC-Algorithmus verwendet, das Passwort ist Passwort und der Initialisierungsvektor ist 1234567890123456 . Sie können den Verschlüsselungsalgorithmus und den Schlüssel nach Bedarf einstellen.
Verwenden Sie beim Entschlüsseln die Decryption -Funktion der OpenSSL, um die komprimierten Paketdaten wiederherzustellen, und verwenden Sie dann Ziparchive, um zu dekomprimieren. Der Beispielcode lautet wie folgt:
<?php
$zipname = 'encrypted.zip';
// Lesen Sie verschlüsselte komprimierte Paketinhalte
$encryptedzip = file_get_contents($zipname);
// Entschlüsseln
$decryptedzip = openssl_decrypt($encryptedzip, 'AES-128-CBC', 'password', OPENSSL_RAW_DATA, '1234567890123456');
file_put_contents($zipname, $decryptedzip);
// 打开Entschlüsseln后的压缩包并解压
$zip = new ZipArchive();
if ($zip->open($zipname) === TRUE) {
$zip->extractTo('unzip/');
$zip->close();
echo '压缩包已Entschlüsseln并解压缩。';
} else {
echo 'Das komprimierte Paket nicht öffnen。';
}
?>
Der gleiche Algorithmus und die gleichen Tasten werden im Entschlüsselungsschritt verwendet, wie bei verschlüsseltem, dass die Daten korrekt wiederhergestellt werden.
Durch die Kombination von PHP -Ziparchive -Klasse und OpenSSL -Erweiterung kann die Verschlüsselung und Entschlüsselung von ZIP -Dateien effektiv realisiert werden, wodurch die Sicherheit von Dateien während der Übertragung und des Speichers verbessert wird. Ich hoffe, die Beispiele und Anweisungen in diesem Artikel sind hilfreich, damit Sie diese Funktion in Ihrem Projekt anwenden können.