Überblick
Aspose.ZIP ermöglicht eine Reihe von Verschlüsselungs- und Entschlüsselungsvorgängen für Archive. Mit der Aspose.Zip-API für Python.NET können Sie ZIP-, RAR- und 7-Zip-Archive effizient verschlüsseln und entschlüsseln.ZIP-Dateien verschlüsseln
Für ZIP-Archive können zwei Verschlüsselungstechniken verwendet werden: die ältere, heute als weniger sicher geltende traditionelle Methode und die robustere moderne AES-Verschlüsselung. Der ZIP-Standard ermöglicht die Verschlüsselung einzelner Einträge innerhalb desselben Archivs mit beiden Methoden. Die für ihre höhere Sicherheit bekannte AES-Verschlüsselung unterstützt verschiedene Schlüssellängen, darunter 128 Bit, 192 Bit und 256 Bit, und bietet so einen verbesserten Schutz für sensible Daten in ZIP-Archiven. Jeder Eintrag im selben Archiv kann mit einer eigenen Verschlüsselung verschlüsselt werden, sodass Sie verschiedene Verschlüsselungstypen im selben Archiv kombinieren können.
Entsperren Sie ZIP mit der Deflate-Methode
with open("archive.zip", 'x') as zip_file:
with open("alice29.txt") as source:
method = zp.saving.CompressionSettings.deflate
encryption = zp.saving.TraditionalEncryptionSettings("p@s$S")
archive = zp.Archive(zp.saving.ArchiveEntrySettings(method, encryption))
archive.create_entry("alice29.txt", source)
archive.save(zip_file)
Der Code erstellt eine neue ZIP-Datei mit dem Namen archive.zip, komprimiert den Inhalt von alice29.txt mit der Deflate-Komprimierungsmethode, verschlüsselt ihn mit der herkömmlichen ZIP-Verschlüsselungsmethode unter Verwendung des Passworts „p@s$S“ und speichert die komprimierte und verschlüsselte Datei Datei in das neu erstellte ZIP-Archiv kopieren.
ZIP mit AES verschlüsseln
with open("archive.zip", 'x') as zip_file:
with open("alice29.txt") as source:
method = zp.saving.CompressionSettings.deflate
encryption = zp.saving.AesEcryptionSettings("p@s$S", zp.saving.EncryptionMethod.AES256)
archive = zp.Archive(zp.saving.ArchiveEntrySettings(method, encryption))
archive.create_entry("alice29.txt", source)
archive.save(zip_file)
Der bereitgestellte Code zeigt, wie Sie ein ZIP-Archiv mit dem Namen archive.zip erstellen, eine Datei alice29.txt mit der Deflate-Komprimierungsmethode komprimieren und sie mit AES-256-Verschlüsselung mit dem Passwort „p@s$S“ verschlüsseln. Für diese Beispiele haben wir Instanzen von
EncryptionSetting
im entsprechenden
Archivkonstruktor
bereitgestellt. Es ist möglich, bestimmte Einträge zu verschlüsseln und andere ungeschützt zu lassen.
Dies zeigt die Flexibilität der Anwendung der Verschlüsselung auf bestimmte Einträge in einem ZIP-Archiv, wodurch verschiedene Dateien unterschiedliche Schutzstufen erhalten können. Dieser Ansatz ermöglicht eine detailliertere und individuellere Sicherheitsstrategie, bei der einzelne Dateien oder Dateigruppen über unterschiedliche Schutzstufen verfügen können. Es ist jedoch wichtig zu beachten, dass diese Vorgehensweise den Verwaltungs- und Entschlüsselungsprozess erschweren kann und die Kompatibilität mit verschiedenen ZIP-Archivierungstools variieren kann.
Verschlüsseln Sie ZIP den zweiten von drei Einträgen
with open("archive.zip", 'x') as zip_file:
encrypted_entry = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$", zp.saving.EncryptionMethod.AES256))
with zp.Archive as archive:
archive.create_entry("alice29.txt", "alice29.txt")
archive.create_entry("asyoulik.txt", "asyoulik.txt", false, encrypted_entry)
archive.create_entry("fields.c", "fields.c")
archive.save(zip_file)
Dieser Code demonstriert das Erstellen eines passwortgeschützten ZIP-Archivs in Python. Es werden drei Dateien hinzugefügt: alice29.txt, asyoulik.txt und Fields.c.
So funktioniert es:
Öffnet oder erstellt eine Datei für das ZIP-Archiv basierend auf dem in this.resultFile gespeicherten Namen. Erstellt FileInfo-Objekte zur Darstellung der hinzuzufügenden Dateien. Erstellt ein neues Archivobjekt.
Fügt Dateien hinzu: alice29.txt und Fields.c werden ohne besondere Einstellungen zum Archiv hinzugefügt. asyoulik.txt wird mit AES-256-Verschlüsselung hinzugefügt und erfordert zur Entschlüsselung das Passwort p@s$. Speichert das fertige Archiv in der angegebenen Datei.
Verschlüsseln Sie ZIP mit verschiedenen Methoden und Passwörtern
with open("archive.zip", 'x') as zip_file:
encrypted_1 = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$1", zp.saving.EncryptionMethod.AES256))
encrypted_2 = zp.saving.ArchiveEntrySettings(None, zp.saving.TraditionalEncryptionSettings("p@s$2"))
encrypted_3 = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$3", zp.saving.EncryptionMethod.AES128))
with zp.Archive as archive:
archive.create_entry("alice29.txt", "alice29.txt", false, encrypted_1)
archive.create_entry ("asyoulik.txt", "asyoulik.txt", false, encrypted_2)
archive.create_entry("fields.c", "fields.c", false, encrypted_3)
archive.save(zip_file)
Dieser Codeausschnitt demonstriert die Erstellung eines ZIP-Archivs in Python, in dem einzelne Dateien mit unterschiedlichen Methoden und Passwörtern verschlüsselt werden. So funktioniert es:
Datei-Setup: Öffnet oder erstellt eine Datei für das ZIP-Archiv basierend auf dem in this.resultFile gespeicherten Namen. Erstellt FileInfo-Objekte, die die hinzuzufügenden Dateien darstellen: alice29.txt, asyoulik.txt und Fields.c.
Erstellen des Archivs: Erstellt ein neues Archivobjekt (Archiv).
Hinzufügen verschlüsselter Dateien: Der Code verwendet eine Schleife, um die Dateien zu durchlaufen und sie mit bestimmten Verschlüsselungseinstellungen zum Archiv hinzuzufügen:
– alice29.txt
– Diese Datei wird mit ** hinzugefügt AES-256-Verschlüsselung** und erfordert zur Entschlüsselung das Passwort „p@s“.
– asyoulik.txt
– Diese Datei wird mit einer anderen Verschlüsselungsmethode namens Traditionelle Verschlüsselung hinzugefügt. Für die Entschlüsselung wird außerdem ein separates Passwort „p@s“ verwendet.
– fields.c
– Diese Datei wird wieder mit AES-128-Verschlüsselung hinzugefügt, aber mit einem anderen Passwort, „p@s$3“, zur Entschlüsselung.
Speichern des Archivs: Schließlich speichert der Code das fertige Archiv mit den verschlüsselten Dateien in der angegebenen Datei.
Verschlüsseln Sie das ZIP-Archiv mit verschiedenen Methoden und Passwörtern
with zp.Archive("plain.zip") as archive:
save_options = zp.saving.ArchiveSaveOptions()
save_options.encryption_options = zp.saving.AesEcryptionSettings("p@s$", zp.saving.EncryptionMethod.AES256)
archive.save("encrypted.zip", save_options)
Dieser Code nimmt ein vorhandenes ZIP-Archiv plain.zip, verschlüsselt seinen Inhalt mit AES-256 mit dem Passwort p@s$ und speichert die verschlüsselte Version als neues Archiv mit dem Namen encrypted.zip.
ZIP-Dateien entschlüsseln
ZIP-Datei mit Passwort entschlüsseln
with zp.Archive("source.zip") as archive:
archive.entries[0].extract("first_entry.bin", "p@s$")
Der Benutzer hat die Möglichkeit, entweder einen bestimmten Eintrag innerhalb des verschlüsselten ZIP-Archivs zu entschlüsseln. Dieses Code-Snippet demonstriert einen grundlegenden Ansatz zum Entschlüsseln des ersten Eintrags aus einem passwortgeschützten ZIP-Archiv. Wenn das Passwort korrekt ist, wird das Archiv erfolgreich geöffnet.
Ganze ZIP-Datei entschlüsseln
load_options = zp.ArchiveLoadOptions()
load_options.decryption_password = "p@s$S"
with zp.Archive("source.zip", load_options) as archive:
archive.extract_to_directory("destination")
Dieser einfache Code nimmt ein passwortgeschütztes ZIP-Archiv „source.zip“, verwendet das bereitgestellte Passwort „p@s$S“ zur Entschlüsselung und extrahiert seinen gesamten Inhalt in einen bestimmten Ordner „Ziel“.
RAR-Datei entschlüsseln
Aspose.ZIP unterstützt nicht die Erstellung von RAR-Archiven, sondern nur die Extraktion. RAR-Archive können mit oder ohne Schutz der Dateinamen verschlüsselt werden.
Im ersteren Fall muss der Benutzer gleich zu Beginn der RAR-Archivinstanziierung ein Entschlüsselungskennwort in
RarArchiveLoadOptions
angeben. Im letzteren Fall ist es möglich, das Passwort später beim Extrahieren des Eintrags zu übergeben.
Entschlüsseln Sie das gesamte RAR-Archiv mit verschlüsselten Dateinamen
load_options = zp.rar.RarArchiveLoadOptions()
load_options.decryption_password = "p@s$S"
with zp.rar.RarArchive("source.rar", load_options) as archive:
archive.extract_to_directory("destination")
Im Wesentlichen funktioniert dieser Code ähnlich wie das ZIP-Beispiel, funktioniert jedoch speziell für RAR-Archive. Es nimmt ein passwortgeschütztes RAR-Archiv „source.rar“, verwendet das bereitgestellte Passwort „p@s$S“ zur Entschlüsselung und extrahiert seinen gesamten Inhalt in einen bestimmten Ordner „Ziel“.
Entschlüsseln Sie einen bestimmten Eintrag aus dem RAR-Archiv
with zp.rar.RarArchive("source.rar") as archive:
archive.entries[0].extract("first_entry.bin", "p@s$S")
Dieser Code öffnet das RAR-Archiv source.rar, entschlüsselt und extrahiert den ersten Eintrag des Archivs mit dem Passwort „p@s$S“ und speichert ihn in der Datei first_entry.bin. Dieses Beispiel würde funktionieren, wenn nur der Inhalt der Einträge verschlüsselt wird, die Dateinamen jedoch nicht.
Entschlüsseln Sie einen bestimmten Eintrag aus dem RAR-Archiv als Stream
with io.FileIO("file.bin", "xb") as destination:
with zp.rar.RarArchive("source.rar") as archive:
with archive.entries[0].open("p@s$S") as source:
destination.write(source.readall())
Dieser Code öffnet das RAR-Archiv source.rar, entschlüsselt den zweiten Datensatz des Archivs mit dem Passwort „p@s$S“ und liest seinen Inhalt in einen ByteArrayOutputStream. Durch die Verwendung eines Lesepuffers gewährleistet der Code eine schrittweise Datenübertragung, was zur effizienten Verarbeitung großer Dateien beiträgt. Dieses Beispiel würde funktionieren, wenn nur der Inhalt der Einträge verschlüsselt wird, die Dateinamen jedoch nicht. In diesem Beispieleintrag werden Bytes in den Speicherstream kopiert.
7zip-Verschlüsselung mit AES 256
Die einzige Option der 7z-Archivverschlüsselung ist AES . Das Archiv nutzt die LZMA2-Komprimierung zur effizienten Reduzierung der Dateigröße und die AES-Verschlüsselung mit Passwort für zusätzliche Sicherheit. Der Code durchläuft die Dateien und fügt sie mithilfe der CreateEntry-Methode dem Archiv hinzu.
Verschlüsseln und komprimieren Sie das gesamte 7zip-Archiv
with open("archive.7z", 'xb') as sz_file:
compression = zp.saving.SevenZipLZMA2CompressionSettings()
encryption = zp.saving.SevenZipAESEncryptionSettings("p@s$S")
entry_settings = zp.saving.SevenZipEntrySettings(compression, encryption)
with zp.sevenzip.SevenZipArchive(entry_settings) as archive:
archive.create_entry("alice29.txt", "alice29.txt")
archive.create_entry("asyoulik.txt", "asyoulik.txt")
archive.create_entry("fields.c", "fields.c")
archive.save(sz_file)
Dieser Code erstellt ein verschlüsseltes 7z-Archiv mit drei Dateien: alice29.txt, asyoulik.txt und Fields.c. Das Archiv verwendet LZMA2-Komprimierung und AES-Verschlüsselung mit dem Passwort „p@s$S“. Dateien werden mit der Methode „CreateEntry“ zum Archiv hinzugefügt und das Archiv selbst wird in der erstellten Datei „archive.7z“ gespeichert.
7z mit Passwort verschlüsseln
with open("archive.7z", 'xb') as sz_file:
compression = zp.saving.SevenZipLZMA2CompressionSettings()
entry_pass1 = zp.saving.SevenZipEntrySettings(compression, zp.saving.SevenZipAESEncryptionSettings("p@s$S"))
entry_pass2 = zp.saving.SevenZipEntrySettings(compression, zp.saving.SevenZipAESEncryptionSettings("$ecret"))
with zp.sevenzip.SevenZipArchive(entry_settings) as archive:
archive.create_entry("alice29.txt", "alice29.txt")
archive.create_entry("asyoulik.txt", "asyoulik.txt", false, entry_pass1)
archive.create_entry("fields.c", "fields.c", false, entry_pass2)
archive.save(sz_file)
Dieser Code erstellt ein verschlüsseltes 7z-Archiv mit drei Dateien: alice29.txt, asyoulik.txt und Fields.c. Die erste Datei wird ohne besondere Einstellungen zum Archiv hinzugefügt. Die zweite Datei wird mittels LZMA2-Komprimierung und AES-Verschlüsselung mit dem Passwort „p@s$S“ angehängt. Die dritte Datei wird mittels LZMA2-Komprimierung und AES-Verschlüsselung mit dem Passwort „$ecret“ angehängt. Abschließend wird das Archiv in der Datei archive.7z gespeichert.
Ähnlich wie bei ZIP kann der Benutzer entweder das gesamte Archiv oder einen bestimmten Eintrag daraus entschlüsseln. 7Z-Archive können mit oder ohne Schutz der Dateinamen verschlüsselt werden. Wenn Dateinamen verschlüsselt sind, müssen Sie bei der
Archivinstanziierung
ein Passwort angeben.
7ZIP-Dateien entschlüsseln
7z-Archiv mit verschlüsselten Dateinamen entschlüsseln
with zp.sevenzip.SevenZipArchive("archive.7z", "p@s$S") as archive:
archive.extract_to_directory("c:\extracted")
Unabhängig davon, ob Dateinamen verschlüsselt sind oder nicht, ist es sicher, im Extraktionskonstruktor ein Kennwort anzugeben. Das folgende Beispiel funktioniert nur, wenn nur Inhalte geschützt sind.
Entschlüsseln Sie einen bestimmten 7zip-Eintrag
with zp.sevenzip.SevenZipArchive("archive.7z") as archive:
archive.entries[0].extract("data.bin", "p@s$S")
Unabhängig davon, ob Dateinamen verschlüsselt sind oder nicht, ist es sicher, im Extraktionskonstruktor ein Kennwort anzugeben. Das folgende Beispiel funktioniert nur, wenn nur Inhalte geschützt sind.
Weitere unterstützte Aspose.ZIP für Python.Net-API-Funktionen
Mit der Aspose.ZIP-Bibliothek in Python.Net können Sie verschiedene Aufgaben im Zusammenhang mit ZIP-Dateidokumenten nahtlos erledigen. Unabhängig davon, ob Sie Formate konvertieren, Dateien zusammenführen, Inhalte bearbeiten oder Daten extrahieren müssen, bietet Aspose.ZIP umfassende Funktionen, um Ihren Arbeitsablauf zu optimieren und die Produktivität zu steigern.
Support and Learning Resources
- Lernmittel
- Dokumentation
- Quellcode
- API-Referenzen
- Produkt Support
- Kostenloser Support
- Bezahlter Support
- Blog
- Versionshinweise
- Warum Aspose.Zip für Python.Net?
- Kundenliste
- Erfolgsgeschichten