Lag en kryptert ZIP-fil i Python

stemmer
30

Jeg skaper en ZIP-fil med zipfile i Python 2.5, det fungerer ok så langt:

import zipfile, os

locfile = test.txt
loczip = os.path.splitext (locfile)[0] + .zip
zip = zipfile.ZipFile (loczip, w)
zip.write (locfile)
zip.close()

men jeg kunne ikke finne ut hvordan å kryptere filer i ZIP-filen. Jeg kunne bruke systemet og ringe PKZIP -s, men jeg antar at det må være en mer Pytonske måte. Jeg leter etter en åpen kildekode-løsning.

Publisert på 20/08/2008 klokken 00:16
kilden bruker
På andre språk...                            


5 svar

stemmer
15

Jeg laget en enkel bibliotek for å lage et passord kryptert zip-fil i python. - her

import pyminizip

compression_level = 5 # 1-9
pyminizip.compress("src.txt", "dst.zip", "password", compression_level)

Biblioteket krever zlib.

Jeg har kontrollert at filen kan utvinnes i WINDOWS / MAC.

Svarte 17/04/2013 kl. 01:39
kilden bruker

stemmer
5

Duplikat spørsmålet https://stackoverflow.com/a/2366917/874188 anbefaler å bruke 7zi stedet for zip. Min erfaring bærer dette ut.

Kopier / lime svaret ved @JFSebastian her også for fullstendighet:

Å skape kryptert zip-arkiv (kalt 'myarchive.zip') ved hjelp av open-source 7-Zipverktøy:

rc = subprocess.call(['7z', 'a', '-pP4$$W0rd', '-y', 'myarchive.zip'] + 
                     ['first_file.txt', 'second.file'])

For å installere 7-Zip, type:

$ sudo apt-get install p7zip-full

For å dekomprimere for hånd (for å demonstrere kompatibilitet med glidelås utitity), Type:

$ unzip myarchive.zip

Og skriv inn P4$$W0rdved ledeteksten.

Eller det samme i Python 2.6+:

>>> zipfile.ZipFile('myarchive.zip').extractall(pwd='P4$$W0rd')
Svarte 12/12/2014 kl. 12:27
kilden bruker

stemmer
0

pyminizipfungerer bra i å skape en passordbeskyttet zip-fil. For unziping, svikter det på noen situasjoner. Testet på python 3.7.3

Her, jeg brukte pyminizip for kryptering av filen.

import pyminizip
compression_level = 5 # 1-9
pyminizip.compress("src.txt",'src', "dst.zip", "password", compression_level)

For unzip, brukte jeg zip-fil modul:

from zipfile import ZipFile

with ZipFile('/home/paulsteven/dst.zip') as zf:
    zf.extractall(pwd=b'password')
Svarte 08/08/2019 kl. 07:47
kilden bruker

stemmer
0

Du kan bruke Chilkat biblioteket. Det er kommersielle, men har en gratis evaluering og synes ganske fin.

Her er et eksempel jeg fikk fra her :

import chilkat

# Demonstrates how to create a WinZip-compatible 128-bit AES strong encrypted zip
zip = chilkat.CkZip()
zip.UnlockComponent("anything for 30-day trial")

zip.NewZip("strongEncrypted.zip")

# Set the Encryption property = 4, which indicates WinZip compatible AES encryption.
zip.put_Encryption(4)
# The key length can be 128, 192, or 256.
zip.put_EncryptKeyLength(128)
zip.SetPassword("secret")

zip.AppendFiles("exampleData/*",True)
zip.WriteZip()
Svarte 20/08/2008 kl. 01:20
kilden bruker

stemmer
-1

@ Tripleee svar hjalp meg, se min test nedenfor.

Denne koden fungerer for meg på python 3.5.2 på Windows 8.1 ( 7z banen legges til i systemet).

rc = subprocess.call(['7z', 'a', output_filename + '.zip', '-mx9', '-pSecret^)'] + [src_folder + '/'])

Med to parametere:

  1. -mx9 betyr max kompresjon
  2. -pSecret^)betyr passord er Secret^). ^er flykte for )for Windows OS, men når du pakke, trenger den typen i ^.

Uten ^Windows OS vil ikke bruke passord når 7z.exe oppretter zip -filen.

Også, hvis du ønsker å bruke -mhebryteren, må du filformatet til å være i 7z stedet for glidelås .

Jeg håper at kan hjelpe.

Svarte 20/10/2016 kl. 21:18
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more