Overzicht

Aspose.ZIP vergemakkelijkt een reeks coderings- en decoderingsbewerkingen voor archieven. Met de Aspose.Zip API voor Python.NET kunt u ZIP-, RAR- en 7-Zip-archieven efficiënt coderen en decoderen.

Versleutel ZIP-bestanden

Voor ZIP-archieven kunnen twee versleutelingstechnieken worden gebruikt: de oudere, nu als minder veilige traditionele methode beschouwd, en de robuustere moderne AES-versleuteling. De ZIP-standaard maakt de versleuteling van individuele vermeldingen binnen hetzelfde archief met beide methoden mogelijk. AES-codering, bekend om zijn sterkere beveiliging, ondersteunt verschillende sleutellengtes, waaronder 128-bit, 192-bit en 256-bit, en biedt verbeterde bescherming voor gevoelige gegevens in ZIP-archieven. Elke vermelding in hetzelfde archief kan worden gecodeerd met een eigen codering, zodat u verschillende coderingstypen in hetzelfde archief kunt combineren.

Ontgrendel ZIP met de 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)

De code creëert een nieuw ZIP-bestand met de naam archive.zip, comprimeert de inhoud van alice29.txt met behulp van de Deflate-compressiemethode, codeert deze met de traditionele ZIP-coderingsmethode met behulp van het wachtwoord "p@s$S", en slaat de gecomprimeerde en gecodeerde bestanden op. bestand naar het nieuw gemaakte ZIP-archief.

Versleutel ZIP met AES

    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)

De meegeleverde code demonstreert hoe u een ZIP-archief met de naam archive.zip kunt maken, een bestand alice29.txt kunt comprimeren met behulp van de Deflate-compressiemethode en dit kunt coderen met AES-256-codering met het wachtwoord "p@s$S". Voor deze voorbeelden hebben we instanties geleverd van EncryptionSetting binnen de overeenkomstige Archive constructor . Het is mogelijk om encryptie toe te passen voor bepaalde toegang, waardoor andere onbeschermd blijven.
Dit demonstreert de flexibiliteit van het toepassen van encryptie op specifieke items binnen een ZIP-archief, waardoor verschillende bestanden verschillende beschermingsniveaus kunnen hebben. Deze aanpak maakt een meer gedetailleerde en op maat gemaakte beveiligingsstrategie mogelijk, waarbij individuele bestanden of groepen bestanden verschillende beschermingsniveaus kunnen hebben. Het is echter belangrijk op te merken dat deze praktijk het beheer- en decoderingsproces kan bemoeilijken, en dat de compatibiliteit met verschillende ZIP-archieftools kan variëren.

Versleutel ZIP de tweede invoer van drie

    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)

Deze code demonstreert het maken van een met een wachtwoord beveiligd ZIP-archief in Python. Het voegt drie bestanden toe: alice29.txt, asyoulik.txt en field.c.
Zo werkt het:
Opent of maakt een bestand voor het ZIP-archief op basis van de naam die is opgeslagen in this.resultFile. Creëert FileInfo-objecten om de toe te voegen bestanden weer te geven. Creëert een nieuw archiefobject.
Voegt bestanden toe: alice29.txt en field.c worden zonder speciale instellingen aan het archief toegevoegd. asyoulik.txt is toegevoegd met AES-256-codering, waarvoor het wachtwoord p@s$ vereist is voor decodering. Slaat het voltooide archief op in het opgegeven bestand.

Versleutel ZIP met verschillende methoden en wachtwoorden

    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)

Dit codefragment demonstreert het maken van een ZIP-archief in Python waarin individuele bestanden worden gecodeerd met verschillende methoden en wachtwoorden. Zo werkt het:
Bestandsinstellingen: Opent of maakt een bestand voor het ZIP-archief op basis van de naam die is opgeslagen in this.resultFile. Creëert FileInfo-objecten die de toe te voegen bestanden vertegenwoordigen: alice29.txt, asyoulik.txt en field.c.
Het archief aanmaken: Creëert een nieuw archiefobject (archief).
Gecodeerde bestanden toevoegen: De code gebruikt een lus om door de bestanden te lopen en ze toe te voegen aan het archief met specifieke coderingsinstellingen:
alice29.txt - Dit bestand is toegevoegd met ** AES-256-codering** en vereist het wachtwoord "p@s" voor decodering.
asyoulik.txt - Dit bestand is toegevoegd met een andere versleutelingsmethode genaamd Traditionele versleuteling. Het gebruikt ook een apart wachtwoord, "p@s", voor decodering.
fields.c - Dit bestand is opnieuw toegevoegd met AES-128-codering, maar met een ander wachtwoord, "p@s$3", voor decodering.
Het archief opslaan: Ten slotte slaat de code het voltooide archief met de gecodeerde bestanden op in het opgegeven bestand.

Versleutel ZIP-archief met verschillende methoden en wachtwoorden

    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)

Deze code neemt een bestaand ZIP-archief plain.zip, codeert de inhoud ervan met behulp van AES-256 met het wachtwoord p@s$, en slaat de gecodeerde versie op als een nieuw archief met de naam encrypted.zip.

Decodeer ZIP-bestanden

Decodeer ZIP-bestand met wachtwoord

    with zp.Archive("source.zip") as archive:
        archive.entries[0].extract("first_entry.bin", "p@s$")

De gebruiker heeft de mogelijkheid om een ​​specifiek item binnen het gecodeerde ZIP-archief te decoderen. Dit codefragment demonstreert een basisaanpak voor het decoderen van de eerste invoer uit een met een wachtwoord beveiligd ZIP-archief. Als het wachtwoord correct is, wordt het archief met succes geopend.

Decodeer het hele ZIP-bestand

    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")

Deze eenvoudige code neemt een met een wachtwoord beveiligd ZIP-archief "source.zip", gebruikt het opgegeven wachtwoord "p@s$S" voor decodering en extraheert de volledige inhoud ervan naar een aangewezen map "destination".

Decodeer het RAR-bestand

Aspose.ZIP ondersteunt geen RAR-archiefcompositie, het ondersteunt alleen extractie. Het RAR-archief kan worden gecodeerd met of zonder bescherming van bestandsnamen.
In het eerste geval moet de gebruiker het decoderingswachtwoord opgeven in RarArchiveLoadOptions helemaal aan het begin van de instantiatie van het RAR-archief. In het laatste geval is het mogelijk om het wachtwoord later bij de invoerextractie door te geven.

Decodeer het hele RAR-archief met gecodeerde bestandsnamen

    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")

In wezen functioneert deze code op dezelfde manier als het ZIP-voorbeeld, maar werkt specifiek voor RAR-archieven. Het gebruikt een met een wachtwoord beveiligd RAR-archief "source.rar", gebruikt het opgegeven wachtwoord "p@s$S" voor decodering en extraheert de volledige inhoud ervan naar een aangewezen map "destination".

Decodeer een bepaald item uit het RAR-archief

    with zp.rar.RarArchive("source.rar") as archive:
        archive.entries[0].extract("first_entry.bin", "p@s$S")

Deze code opent het RAR-archief source.rar, decodeert en extraheert de eerste vermelding van het archief met het wachtwoord "p@s$S" en slaat deze op in het bestand first_entry.bin. Dit voorbeeld zou werken als alleen de inhoud van de vermeldingen gecodeerd is, maar de bestandsnamen niet.

Decodeer een bepaald item uit het RAR-archief als een 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())

Deze code opent het RAR-archief source.rar, decodeert het tweede record van het archief met het wachtwoord "p@s$S" en leest de inhoud ervan in een ByteArrayOutputStream. Door gebruik te maken van een leesbuffer zorgt de code voor een geleidelijke gegevensoverdracht, waardoor grote bestanden efficiënt kunnen worden verwerkt. Dit voorbeeld zou werken als alleen de inhoud van de vermeldingen gecodeerd is, maar de bestandsnamen niet. In dit voorbeeld worden entrybytes naar de geheugenstroom gekopieerd.

7zip-codering met aes 256

De enige optie voor 7z-archiefversleuteling is AES . Het archief maakt gebruik van LZMA2-compressie voor een efficiënte verkleining van de bestandsgrootte en AES-codering met het wachtwoord voor extra veiligheid. De code doorloopt de bestanden en voegt ze toe aan het archief met behulp van de CreateEntry-methode.

Versleutel en comprimeer het hele 7zip-archief

    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)

Deze code creëert een gecodeerd 7z-archief met drie bestanden: alice29.txt, asyoulik.txt en field.c. Het archief maakt gebruik van LZMA2-compressie en AES-codering met het wachtwoord "p@s$S". Bestanden worden aan het archief toegevoegd met behulp van de CreateEntry-methode en het archief zelf wordt opgeslagen in het gemaakte archive.7z-bestand.

7z Coderen met wachtwoord

    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)

Deze code creëert een gecodeerd 7z-archief met drie bestanden: alice29.txt, asyoulik.txt en field.c. Het eerste bestand wordt zonder speciale instellingen aan het archief toegevoegd. Het tweede bestand is bijgevoegd met behulp van LZMA2-compressie en AES-codering met het wachtwoord "p@s$S". Het derde bestand is bijgevoegd met behulp van LZMA2-compressie en AES-codering met het wachtwoord "$ecret". Ten slotte wordt het archief opgeslagen in het archive.7z-bestand.
Net als bij ZIP kan de gebruiker het hele archief of een bepaald item daaruit decoderen. Het 7Z-archief kan worden gecodeerd met of zonder bescherming van bestandsnamen. Als bestandsnamen gecodeerd zijn, moet u een wachtwoord opgeven op archive instantiation .

Decodeer 7ZIP-bestanden

Decodeer 7z-archief met gecodeerde bestandsnamen

    with zp.sevenzip.SevenZipArchive("archive.7z", "p@s$S") as archive: 
        archive.extract_to_directory("c:\extracted")

Of bestandsnamen nu gecodeerd zijn of niet, het is veilig om een ​​wachtwoord op te geven binnen de uitpakkende constructor. Het onderstaande voorbeeld werkt alleen als alleen de inhoud wordt beschermd.

Decodeer een bepaald item van 7zip

with zp.sevenzip.SevenZipArchive("archive.7z") as archive:
    archive.entries[0].extract("data.bin", "p@s$S")

Of bestandsnamen nu gecodeerd zijn of niet, het is veilig om een ​​wachtwoord op te geven binnen de uitpakkende constructor. Het onderstaande voorbeeld werkt alleen als alleen de inhoud wordt beschermd.

Andere ondersteunde Aspose.ZIP voor Python.Net API-functies

Met de Aspose.ZIP-bibliotheek in Python.Net kunt u naadloos verschillende taken uitvoeren die verband houden met ZIP-bestandsdocumenten. Of u nu formaten moet converteren, bestanden moet samenvoegen, inhoud moet bewerken of gegevens moet extraheren, Aspose.ZIP biedt uitgebreide functionaliteit om uw workflow te stroomlijnen en de productiviteit te verbeteren.

  

Support and Learning Resources

  
  

Aspose.Zip offers individual archive processing APIs for other popular development environments, listed below: