Översikt
Aspose.ZIP underlättar en rad krypterings- och dekrypteringsoperationer för arkiv. Genom att använda Aspose.Zip API för Python.NET kan du effektivt kryptera och dekryptera ZIP-, RAR- och 7-Zip-arkiv.Kryptera ZIP-filer
Två krypteringstekniker kan användas för ZIP-arkiv: den äldre, som nu anses vara mindre säker traditionell metod, och den mer robusta moderna AES-krypteringen. ZIP-standarden tillåter kryptering av enskilda poster inom samma arkiv med båda metoderna. AES-kryptering, känd för sin starkare säkerhet, stöder olika nyckellängder, inklusive 128-bitars, 192-bitars och 256-bitars, vilket erbjuder förbättrat skydd för känsliga data i ZIP-arkiv. Varje post i samma arkiv kan vara krypterad med egen kryptering, så du kan blanda olika krypteringstyper i samma arkiv.
Lås upp ZIP med Deflate-metoden
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)
Koden skapar en ny ZIP-fil med namnet archive.zip, komprimerar innehållet i alice29.txt med komprimeringsmetoden Deflate, krypterar det med den traditionella ZIP-krypteringsmetoden med lösenordet "p@s$S", och sparar det komprimerade och krypterade filen till det nyskapade ZIP-arkivet.
Kryptera ZIP med 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)
Den medföljande koden visar hur man skapar ett ZIP-arkiv med namnet archive.zip, komprimerar en fil alice29.txt med hjälp av Deflate-komprimeringsmetoden och krypterar den med AES-256-kryptering med lösenordet "p@s$S". För dessa exempel tillhandahöll vi instanser av
EncryptionSetting
inom motsvarande
Arkivkonstruktor
. Det är möjligt att använda kryptering för en viss post och lämna andra oskyddade.
Detta visar flexibiliteten i att tillämpa kryptering på specifika poster i ett ZIP-arkiv, vilket gör att olika filer kan ha olika skyddsnivåer. Detta tillvägagångssätt möjliggör en mer detaljerad och anpassad säkerhetsstrategi, där enskilda filer eller grupper av filer kan ha distinkta skyddsnivåer. Det är dock viktigt att notera att denna praxis kan komplicera hanteringen och dekrypteringsprocessen, och kompatibiliteten med olika ZIP-arkivverktyg kan variera.
Kryptera ZIP den andra posten av tre
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)
Den här koden demonstrerar att skapa ett lösenordsskyddat ZIP-arkiv i Python. Den lägger till tre filer: alice29.txt, asyoulik.txt och fields.c.
Så här fungerar det:
Öppnar eller skapar en fil för ZIP-arkivet baserat på namnet lagrat i this.resultFile. Skapar FileInfo-objekt för att representera filerna som ska läggas till. Skapar ett nytt arkivobjekt.
Lägger till filer: alice29.txt och fields.c läggs till i arkivet utan några speciella inställningar. asyoulik.txt läggs till med AES-256-kryptering, vilket kräver lösenordet p@s$ för dekryptering. Sparar det färdiga arkivet till den angivna filen.
Kryptera ZIP med olika metoder och lösenord
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)
Detta kodavsnitt visar att man skapar ett ZIP-arkiv i Python där enskilda filer krypteras med olika metoder och lösenord. Så här fungerar det:
Filinställningar: Öppnar eller skapar en fil för ZIP-arkivet baserat på namnet lagrat i this.resultFile. Skapar FileInfo-objekt som representerar filerna som ska läggas till: alice29.txt, asyoulik.txt och fields.c.
Skapa arkivet: Skapar ett nytt arkivobjekt (arkiv).
Lägga till krypterade filer: Koden använder en loop för att iterera genom filerna och lägga till dem i arkivet med specifika krypteringsinställningar:
– alice29.txt
- Den här filen läggs till med ** AES-256-kryptering** och kräver lösenordet "p@s" för dekryptering.
– asyoulik.txt
- Den här filen läggs till med en annan krypteringsmetod som kallas Traditionell kryptering. Den använder också ett separat lösenord, "p@s", för dekryptering.
– fields.c
- Den här filen läggs till med AES-128-kryptering igen, men med ett annat lösenord, "p@s$3", för dekryptering.
Spara arkivet: Slutligen sparar koden det färdiga arkivet som innehåller de krypterade filerna till den angivna filen.
Kryptera ZIP-arkiv med olika metoder och lösenord
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)
Den här koden tar ett befintligt ZIP-arkiv plain.zip, krypterar dess innehåll med AES-256 med lösenordet p@s$ och sparar den krypterade versionen som ett nytt arkiv med namnet encrypted.zip.
Dekryptera ZIP-filer
Dekryptera ZIP-fil med lösenord
with zp.Archive("source.zip") as archive:
archive.entries[0].extract("first_entry.bin", "p@s$")
Användaren har möjlighet att dekryptera antingen en specifik post i det krypterade ZIP-arkivet. Detta kodavsnitt visar ett grundläggande tillvägagångssätt för att dekryptera den första posten från ett lösenordsskyddat ZIP-arkiv. Om lösenordet är korrekt öppnas arkivet.
Dekryptera hela ZIP-filen
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")
Denna enkla kod tar ett lösenordsskyddat ZIP-arkiv "source.zip", använder det angivna lösenordet "p@s$S" för dekryptering och extraherar allt dess innehåll till en angiven mapp "destination".
Dekryptera RAR-fil
Aspose.ZIP stöder inte RAR-arkivkomposition, det stöder bara extraktion. RAR-arkiv kan krypteras med eller utan skyddande filnamn.
I det förra fallet måste användaren ange dekrypteringslösenord inom
RarArchiveLoadOptions
i början av RAR-arkivinstanseringen. I det senare fallet är det möjligt att skicka lösenordet senare vid ingångsextraktion.
Dekryptera hela RAR-arkivet med krypterade filnamn
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")
I huvudsak fungerar den här koden på samma sätt som ZIP-exemplet men fungerar specifikt för RAR-arkiv. Det tar ett lösenordsskyddat RAR-arkiv "source.rar", använder det angivna lösenordet "p@s$S" för dekryptering och extraherar allt dess innehåll till en angiven mapp "destination".
Dekryptera en viss post från RAR-arkivet
with zp.rar.RarArchive("source.rar") as archive:
archive.entries[0].extract("first_entry.bin", "p@s$S")
Denna kod öppnar source.rar RAR-arkivet, dekrypterar och extraherar den första posten i arkivet med lösenordet "p@s$S" och sparar den i filen first_entry.bin. Det här exemplet skulle fungera om bara innehållet i poster är krypterat men inte filnamnen.
Dekryptera en viss post från RAR-arkivet som en ström
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())
Denna kod öppnar RAR-arkivet source.rar, dekrypterar den andra posten i arkivet med lösenordet "p@s$S", och läser dess innehåll till en ByteArrayOutputStream. Genom att använda en läsbuffert säkerställer koden gradvis dataöverföring, vilket hjälper till att hantera stora filer effektivt. Det här exemplet skulle fungera om bara innehållet i poster är krypterat men inte filnamnen. I detta exempel kopieras bytes till minnesströmmen.
7zip-kryptering med aes 256
Det enda alternativet för 7z-arkivkryptering är AES . Arkivet använder LZMA2-komprimering för effektiv filstorleksminskning och AES-kryptering med lösenordet för ökad säkerhet. Koden itererar genom filerna och lägger till dem i arkivet med metoden CreateEntry.
Kryptera och komprimera hela 7zip-arkivet
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)
Denna kod skapar ett krypterat 7z-arkiv som innehåller tre filer: alice29.txt, asyoulik.txt och fields.c. Arkivet använder LZMA2-komprimering och AES-kryptering med lösenordet "p@s$S". Filer läggs till i arkivet med metoden CreateEntry, och själva arkivet sparas i den skapade filen archive.7z.
7z Kryptera med lösenord
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)
Denna kod skapar ett krypterat 7z-arkiv som innehåller tre filer: alice29.txt, asyoulik.txt och fields.c. Den första filen läggs till i arkivet utan särskilda inställningar. Den andra filen bifogas med LZMA2-komprimering och AES-kryptering med lösenordet "p@s$S". Den tredje filen bifogas med LZMA2-komprimering och AES-kryptering med lösenordet "$ecret". Slutligen sparas arkivet i filen archive.7z.
På samma sätt som ZIP kan användaren dekryptera antingen hela arkivet eller en viss post från det. 7Z-arkivet kan krypteras med eller utan skyddande filnamn. Om filnamnen är krypterade måste du ange lösenord på
arkivinstansering
.
Dekryptera 7ZIP-filer
Dekryptera 7z-arkiv med krypterade filnamn
with zp.sevenzip.SevenZipArchive("archive.7z", "p@s$S") as archive:
archive.extract_to_directory("c:\extracted")
Oavsett om filnamnen är krypterade eller inte, är det säkert att ange lösenord i extraherande konstruktor. Exemplet nedan fungerar bara när endast innehåll är skyddat.
Dekryptera 7zip särskild post
with zp.sevenzip.SevenZipArchive("archive.7z") as archive:
archive.entries[0].extract("data.bin", "p@s$S")
Oavsett om filnamnen är krypterade eller inte, är det säkert att ange lösenord i extraherande konstruktor. Exemplet nedan fungerar bara när endast innehåll är skyddat.
Andra Aspose.ZIP för Python.Net API-funktioner som stöds
Med Aspose.ZIP-biblioteket i Python.Net kan du sömlöst hantera olika uppgifter relaterade till ZIP-fildokument. Oavsett om du behöver konvertera format, slå samman filer, redigera innehåll eller extrahera data, erbjuder Aspose.ZIP omfattande funktionalitet för att effektivisera ditt arbetsflöde och förbättra produktiviteten.
Support and Learning Resources
- Lärresurser
- Dokumentation
- Källkod
- API-referenser
- Produktsupport
- Gratis support
- Betald support
- Blogg
- Release Notes
- Varför Aspose.Zip för Python.Net?
- Kundlista
- Framgångsberättelser