Přehled

Aspose.ZIP umožňuje řadu operací šifrování a dešifrování pro archivy. Pomocí Aspose.Zip API pro Python.NET můžete efektivně šifrovat a dešifrovat archivy ZIP, RAR a 7-Zip.

Šifrujte soubory ZIP

Pro archivy ZIP lze použít dvě šifrovací techniky: starší, nyní považovaná za méně bezpečnou tradiční metodu, a robustnější moderní šifrování AES. Standard ZIP povoluje šifrování jednotlivých položek ve stejném archivu pomocí obou metod. Šifrování AES, známé svým silnějším zabezpečením, podporuje různé délky klíčů, včetně 128bitových, 192bitových a 256bitových, a nabízí tak vylepšenou ochranu citlivých dat v archivech ZIP. Každý záznam ve stejném archivu může být zašifrován vlastním šifrováním, takže ve stejném archivu můžete kombinovat různé typy šifrování.

Odemkněte ZIP pomocí metody Deflate

    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)

Kód vytvoří nový soubor ZIP s názvem archive.zip, zkomprimuje obsah souboru alice29.txt pomocí metody komprese Deflate, zašifruje jej tradiční metodou šifrování ZIP pomocí hesla „p@s$S“ a uloží komprimovaný a zašifrovaný soubor soubor do nově vytvořeného ZIP archivu.

Šifrujte ZIP pomocí 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)

Poskytnutý kód ukazuje, jak vytvořit archiv ZIP s názvem archive.zip, komprimovat soubor alice29.txt pomocí metody komprese Deflate a zašifrovat jej pomocí šifrování AES-256 pomocí hesla „p@s$S“. Pro tyto ukázky jsme poskytli instance EncryptionSetting v rámci odpovídajícího konstruktoru archivu . Pro konkrétní záznam je možné použít šifrování, ostatní nechráněné.
Toto předvádí flexibilitu použití šifrování na konkrétní položky v archivu ZIP, což umožňuje různým souborům mít různé úrovně ochrany. Tento přístup umožňuje podrobnější a přizpůsobenou strategii zabezpečení, kde jednotlivé soubory nebo skupiny souborů mohou mít odlišné úrovně ochrany. Je však důležité poznamenat, že tento postup může komplikovat proces správy a dešifrování a kompatibilita s různými archivačními nástroji ZIP se může lišit.

Zašifrujte ZIP druhý záznam ze tří

    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)

Tento kód ukazuje vytvoření archivu ZIP chráněného heslem v Pythonu. Přidá tři soubory: alice29.txt, asyoulik.txt a fields.c.
Funguje to takto:
Otevře nebo vytvoří soubor pro archiv ZIP na základě názvu uloženého v tomto.resultFile. Vytvoří objekty FileInfo reprezentující soubory, které mají být přidány. Vytvoří nový objekt archivu.
Přidává soubory: alice29.txt a fields.c jsou přidány do archivu bez jakýchkoli speciálních nastavení. asyoulik.txt je přidán se šifrováním AES-256, které pro dešifrování vyžaduje heslo p@s$. Uloží dokončený archiv do zadaného souboru.

Šifrujte ZIP různými metodami a hesly

    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)

Tento fragment kódu ukazuje vytvoření archivu ZIP v Pythonu, kde jsou jednotlivé soubory šifrovány různými metodami a hesly. Funguje to následovně:
Nastavení souboru: Otevře nebo vytvoří soubor pro archiv ZIP na základě názvu uloženého v tomto.resultFile. Vytvoří objekty FileInfo představující soubory, které mají být přidány: alice29.txt, asyoulik.txt a fields.c.
Vytvoření archivu: Vytvoří nový objekt archivu (archiv).
Přidávání zašifrovaných souborů: Kód používá smyčku k procházení soubory a jejich přidávání do archivu se specifickými nastaveními šifrování:
alice29.txt - Tento soubor je přidán s ** AES-256 šifrování** a pro dešifrování vyžaduje heslo „p@s“.
asyoulik.txt - Tento soubor je přidán jinou metodou šifrování zvanou Tradiční šifrování. Pro dešifrování také používá samostatné heslo „p@s“.
fields.c - Tento soubor je znovu přidán s AES-128 šifrováním, ale s jiným heslem, "#34;p@s$3"#34;, pro dešifrování.
Uložení archivu: Nakonec kód uloží dokončený archiv obsahující zašifrované soubory do určeného souboru.

Šifrujte archiv ZIP různými metodami a hesly

    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)

Tento kód vezme existující ZIP archiv plain.zip, zašifruje jeho obsah pomocí AES-256 s heslem p@s$ a uloží zašifrovanou verzi jako nový archiv s názvem encrypted.zip.

Dešifrovat soubory ZIP

Dešifrovat soubor ZIP pomocí hesla

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

Uživatel má možnost dešifrovat buď konkrétní záznam v zašifrovaném ZIP archivu. Tento fragment kódu ukazuje základní přístup k dešifrování prvního záznamu z archivu ZIP chráněného heslem. Pokud je heslo správné, archiv se úspěšně otevře.

Dešifrovat celý soubor ZIP

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

Tento jednoduchý kód vezme heslem chráněný ZIP archiv „source.zip“, použije poskytnuté heslo „p@s$S“ k dešifrování a rozbalí veškerý jeho obsah do určené složky „destination“.

Dešifrovat soubor RAR

Aspose.ZIP nepodporuje skládání RAR archivu, podporuje pouze extrakci. Archiv RAR lze šifrovat s ochranou názvů souborů nebo bez nich.
V prvním případě musí uživatel zadat heslo pro dešifrování v rámci RarArchiveLoadOptions na samém začátku vytváření instancí RAR archivu. V druhém případě je možné předat heslo později při extrakci záznamu.

Dešifrujte celý archiv RAR se zašifrovanými názvy souborů

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

V podstatě tento kód funguje podobně jako příklad ZIP, ale funguje speciálně pro archivy RAR. Vezme si heslem chráněný RAR archiv „source.rar“, použije poskytnuté heslo „p@s$S“ k dešifrování a rozbalí veškerý jeho obsah do určené složky „destination“.

Dešifrujte konkrétní položku z archivu RAR

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

Tento kód otevře RAR archiv source.rar, dešifruje a extrahuje první záznam archivu pomocí hesla "#34;p@s$S"#34; a uloží jej do souboru first_entry.bin. Tento příklad by fungoval, pokud by byl zašifrován pouze obsah položek, ale nikoli názvy souborů.

Dešifrovat konkrétní položku z archivu RAR jako 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())

Tento kód otevře RAR archiv source.rar, dešifruje druhý záznam archivu pomocí hesla "#34;p@s$S"#34; a načte jeho obsah do ByteArrayOutputStream. Pomocí čtecí vyrovnávací paměti kód zajišťuje postupný přenos dat, což pomáhá efektivně zpracovávat velké soubory. Tento příklad by fungoval, pokud by byl zašifrován pouze obsah položek, ale nikoli názvy souborů. V tomto příkladu se vstupní bajty kopírují do datového proudu paměti.

7zip šifrování s aes 256

Jedinou možností šifrování archivu 7z je AES . Archiv využívá kompresi LZMA2 pro efektivní zmenšení velikosti souboru a šifrování AES s heslem pro větší bezpečnost. Kód iteruje soubory a přidá je do archivu pomocí metody CreateEntry.

Šifrujte a komprimujte celý archiv 7zip

    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)

Tento kód vytvoří zašifrovaný archiv 7z obsahující tři soubory: alice29.txt, asyoulik.txt a fields.c. Archiv používá kompresi LZMA2 a šifrování AES s heslem „p@s$S“. Soubory se do archivu přidávají metodou CreateEntry a samotný archiv se uloží do vytvořeného souboru archive.7z.

7z Šifrování pomocí hesla

    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)

Tento kód vytvoří zašifrovaný archiv 7z obsahující tři soubory: alice29.txt, asyoulik.txt a fields.c. První soubor je přidán do archivu bez speciálního nastavení. Druhý soubor je připojen pomocí komprese LZMA2 a šifrování AES s heslem „p@s$S“. Třetí soubor je připojen pomocí komprese LZMA2 a šifrování AES s heslem „$ecret“. Nakonec se archiv uloží do souboru archive.7z.
Podobně jako u ZIP může uživatel dešifrovat buď celý archiv, nebo z něj konkrétní záznam. Archiv 7Z lze šifrovat s nebo bez ochrany názvů souborů. Pokud jsou názvy souborů zašifrovány, musíte zadat heslo na instanci archivu .

Dešifrovat 7ZIP soubory

Dešifrujte archiv 7z se zašifrovanými názvy souborů

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

Bez ohledu na to, zda jsou názvy souborů zašifrovány nebo ne, je bezpečné zadat heslo v konstruktoru extrahování. Níže uvedená ukázka bude fungovat pouze v případě, že je chráněn pouze obsah.

Dešifrujte konkrétní položku 7zip

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

Bez ohledu na to, zda jsou názvy souborů zašifrovány nebo ne, je bezpečné zadat heslo v konstruktoru extrahování. Níže uvedená ukázka bude fungovat pouze v případě, že je chráněn pouze obsah.

Další podporované funkce Aspose.ZIP pro Python.Net API

S knihovnou Aspose.ZIP v Python.Net můžete bez problémů zvládnout různé úkoly související s dokumenty souborů ZIP. Ať už potřebujete převádět formáty, slučovat soubory, upravovat obsah nebo extrahovat data, Aspose.ZIP poskytuje komplexní funkce pro zefektivnění vašeho pracovního postupu a zvýšení produktivity.

  

Support and Learning Resources

  
  

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