Áttekintés

Az Aspose.ZIP számos titkosítási és visszafejtési műveletet tesz lehetővé az archívumok számára. Az Aspose.Zip API for Python.NET használatával hatékonyan titkosíthatja és visszafejtheti a ZIP, RAR és 7-Zip archívumokat.

ZIP fájlok titkosítása

A ZIP archívumokhoz két titkosítási technika használható: a régebbi, ma már kevésbé biztonságosnak számító hagyományos módszer és a robusztusabb modern AES titkosítás. A ZIP szabvány lehetővé teszi az egyes bejegyzések titkosítását ugyanabban az archívumban bármelyik módszerrel. Az erősebb biztonságáról ismert AES-titkosítás különféle kulcshosszúságokat támogat, beleértve a 128 bites, 192 bites és 256 bites kulcsokat, így fokozott védelmet kínál a ZIP-archívumokban található érzékeny adatok számára. Ugyanabban az archívumban minden bejegyzés saját titkosítással titkosítható, így ugyanabban az archívumban különböző titkosítási típusokat keverhet.

Oldja fel a ZIP-t a Deflate módszerrel

    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)

A kód létrehoz egy új ZIP fájlt archive.zip néven, tömöríti az alice29.txt tartalmát a Deflate tömörítési módszerrel, titkosítja a hagyományos ZIP titkosítási módszerrel a "p@s$S" jelszóval, és elmenti a tömörített és titkosított fájlt. fájlt az újonnan létrehozott ZIP archívumba.

A ZIP titkosítása AES-sel

    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)

A mellékelt kód bemutatja, hogyan lehet létrehozni egy archive.zip nevű ZIP archívumot, tömöríteni az alice29.txt fájlt a Deflate tömörítési módszerrel, és titkosítani AES-256 titkosítással a „p@s$S” jelszó használatával. Ezekhez a mintákhoz megadtuk a EncryptionSetting példányait a megfelelő Archívum-konstruktoron . Lehetőség van titkosítás alkalmazására egy adott bejegyzéshez, így a többi védelem nélkül marad.
Ez bemutatja a titkosítás alkalmazásának rugalmasságát a ZIP-archívum egyes bejegyzéseinél, lehetővé téve a különböző fájlok eltérő szintű védelmét. Ez a megközelítés részletesebb és testreszabottabb biztonsági stratégiát tesz lehetővé, ahol az egyes fájlok vagy fájlcsoportok eltérő szintű védelemmel rendelkezhetnek. Fontos azonban megjegyezni, hogy ez a gyakorlat megnehezítheti a kezelési és visszafejtési folyamatot, és a különböző ZIP-archívum-eszközökkel való kompatibilitás eltérő lehet.

Titkosítsa a ZIP-kódot a háromból a második bejegyzéshez

    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)

Ez a kód egy jelszóval védett ZIP archívum létrehozását mutatja be Pythonban. Három fájlt ad hozzá: alice29.txt, asyoulik.txt és fields.c.
Így működik:
Megnyit vagy létrehoz egy fájlt a ZIP-archívum számára a this.resultFile fájlban tárolt név alapján. FileInfo objektumokat hoz létre a hozzáadandó fájlok reprezentálására. Új archív objektumot hoz létre.
Fájlok hozzáadása: Az alice29.txt és a fields.c fájl minden különleges beállítás nélkül hozzáadódik az archívumhoz. Az asyoulik.txt fájl AES-256 titkosítással lett hozzáadva, és a visszafejtéshez a p@s$ jelszó szükséges. Az elkészült archívumot a megadott fájlba menti.

Titkosítsa a ZIP-t különböző módszerekkel és jelszavakkal

    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)

Ez a kódrészlet bemutatja egy ZIP archívum létrehozását Pythonban, ahol az egyes fájlok különböző módszerekkel és jelszavakkal vannak titkosítva. Működése a következő:
Fájlbeállítás: Megnyit vagy létrehoz egy fájlt a ZIP-archívum számára a this.resultFile fájlban tárolt név alapján. Létrehozza a hozzáadandó fájlokat képviselő FileInfo objektumokat: alice29.txt, asyoulik.txt és fields.c.
Archívum létrehozása: Új archív objektumot (archívumot) hoz létre.
Titkosított fájlok hozzáadása: A kód egy ciklust használ a fájlok átfutásához és az archívumhoz való hozzáadásához meghatározott titkosítási beállításokkal:
alice29.txt - Ez a fájl a következővel van hozzáadva:** AES-256 titkosítás**, és a visszafejtéshez a "p@s" jelszó szükséges.
asyoulik.txt - Ez a fájl egy másik, hagyományos titkosítás nevű titkosítási módszerrel lett hozzáadva. A visszafejtéshez külön jelszót is használ, "p@s".
fields.c - Ez a fájl ismét AES-128 titkosítással lett hozzáadva, de más jelszóval, "p@s$3" a ​​visszafejtéshez.
Archívum mentése: Végül a kód elmenti az elkészült, titkosított fájlokat tartalmazó archívumot a megadott fájlba.

Titkosítsa a ZIP-archívumot különböző módszerekkel és jelszavakkal

    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)

Ez a kód egy meglévő ZIP archívumot vesz fel plain.zip, AES-256 segítségével titkosítja annak tartalmát p@s$ jelszóval, és a titkosított verziót új archívumként menti encrypted.zip néven.

A ZIP fájlok visszafejtése

A ZIP fájl visszafejtése jelszóval

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

A felhasználónak lehetősége van egy adott bejegyzés visszafejtésére a titkosított ZIP-archívumban. Ez a kódrészlet a jelszóval védett ZIP archívum első bejegyzésének visszafejtésének alapvető megközelítését mutatja be. Ha a jelszó helyes, az archívum sikeresen megnyílik.

A teljes ZIP fájl visszafejtése

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

Ez az egyszerű kód egy jelszóval védett "source.zip" ZIP archívumot vesz fel, a megadott "p@s$S" jelszót használja a visszafejtéshez, és annak teljes tartalmát kibontja egy kijelölt "cél" mappába.

RAR fájl visszafejtése

Az Aspose.ZIP nem támogatja a RAR archívum összeállítást, csak a kibontást. A RAR archívum titkosítható fájlnevekkel vagy anélkül.
Az előbbi esetben a felhasználónak meg kell adnia a visszafejtési jelszót a [RarArchiveLoadOptions]-ban ( https://reference.aspose.com/zip/net/aspose.zip.rar/rararchiveloadoptions/ ) a RAR archívum példányosításának legelején. Ez utóbbi esetben lehetőség van a jelszó későbbi átadására a bejegyzés kibontásakor.

A teljes RAR archívum visszafejtése titkosított fájlnevekkel

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

Lényegében ez a kód a ZIP-példához hasonlóan működik, de kifejezetten RAR archívumokhoz működik. Elvesz egy jelszóval védett "source.rar" RAR archívumot, a megadott "p@s$S" jelszót használja a visszafejtéshez, és annak teljes tartalmát kibontja egy kijelölt "cél" mappába.

Egy adott bejegyzés visszafejtése a RAR archívumból

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

Ez a kód megnyitja a source.rar RAR archívumot, dekódolja és kicsomagolja az archívum első bejegyzését a „p@s$S” jelszó használatával, és elmenti a first_entry.bin fájlba. Ez a minta akkor működne, ha csak a bejegyzések tartalma van titkosítva, de a fájlnevek nem.

Egy adott bejegyzés visszafejtése a RAR archívumból adatfolyamként

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

Ez a kód megnyitja a source.rar RAR archívumot, dekódolja az archívum második rekordját a „p@s$S” jelszó használatával, és beolvassa a tartalmát egy ByteArrayOutputStreambe. Olvasási puffer használatával a kód fokozatos adatátvitelt biztosít, ami segít a nagy fájlok hatékony kezelésében. Ez a minta akkor működne, ha csak a bejegyzések tartalma van titkosítva, de a fájlnevek nem. Ebben a mintában a bejegyzés bájtjait a memóriafolyamba másoljuk.

7zip titkosítás AES 256-tal

A 7z archívumtitkosítás egyetlen lehetősége az AES . Az archívum LZMA2 tömörítést használ a hatékony fájlméret-csökkentés érdekében, és AES titkosítást jelszóval a nagyobb biztonság érdekében. A kód a fájlok között iterál, és a CreateEntry metódussal hozzáadja azokat az archívumhoz.

A teljes 7zip archívum titkosítása és tömörítése

    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)

Ez a kód egy titkosított 7z archívumot hoz létre, amely három fájlt tartalmaz: alice29.txt, asyoulik.txt és fields.c. Az archívum LZMA2 tömörítést és AES titkosítást használ "p@s$S" jelszóval. A fájlok a CreateEntry metódussal kerülnek az archívumba, és maga az archívum a létrehozott archívum.7z fájlba kerül mentésre.

7z Titkosítás jelszóval

    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)

Ez a kód egy titkosított 7z archívumot hoz létre, amely három fájlt tartalmaz: alice29.txt, asyoulik.txt és fields.c. Az első fájl speciális beállítások nélkül hozzáadódik az archívumhoz. A második fájl LZMA2 tömörítéssel és AES titkosítással van csatolva a "p@s$S" jelszóval. A harmadik fájl LZMA2 tömörítéssel és AES titkosítással van csatolva a "$ecret" jelszóval. Végül az archívum az archívum.7z fájlba kerül.
A ZIP-hez hasonlóan a felhasználó akár a teljes archívumot, akár egy bizonyos bejegyzést visszafejthet belőle. A 7Z archívum titkosítható fájlnevekkel vagy anélkül. Ha a fájlnevek titkosítottak, meg kell adnia a jelszót az archív példány .

7ZIP fájlok visszafejtése

A 7z archívum visszafejtése titkosított fájlnevekkel

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

Függetlenül attól, hogy a fájlnevek titkosítottak vagy sem, biztonságosan megadhatja a jelszót a kicsomagoló konstruktorban. Az alábbi minta csak akkor működik, ha csak a tartalom védett.

Egy adott 7zip bejegyzés visszafejtése

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

Függetlenül attól, hogy a fájlnevek titkosítottak vagy sem, biztonságosan megadhatja a jelszót a kicsomagoló konstruktorban. Az alábbi minta csak akkor működik, ha csak a tartalom védett.

Egyéb támogatott Aspose.ZIP a Python.Net API-hoz

A Python.Net Aspose.ZIP könyvtárával zökkenőmentesen kezelheti a ZIP fájlokkal kapcsolatos különféle feladatokat. Legyen szó formátumok konvertálására, fájlok egyesítésére, tartalom szerkesztésére vagy adatok kibontására, az Aspose.ZIP átfogó funkcionalitást biztosít a munkafolyamat egyszerűsítéséhez és a termelékenység növeléséhez.

  

Support and Learning Resources

  
  

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