Δημιουργήστε ένα κρυπτογραφημένο αρχείο ZIP σε Python

ψήφοι
30

Είμαι δημιουργώντας ένα αρχείο ZIP με zipfile στην Python 2.5, λειτουργεί εντάξει μέχρι τώρα:

import zipfile, os

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

αλλά δεν μπόρεσα να βρω πώς να κρυπτογραφήσετε τα αρχεία στο αρχείο ZIP. Θα μπορούσα να χρησιμοποιήσω το σύστημα και να καλέσει PKZIP-s, αλλά υποθέτω ότι θα πρέπει να υπάρξει μια πιο «Pythonic» τρόπο. Ψάχνω για μια λύση ανοικτού κώδικα.

Δημοσιεύθηκε 20/08/2008 στις 01:16
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
0

Μπορείτε να χρησιμοποιήσετε το Chilkat βιβλιοθήκη. Είναι εμπορικό, αλλά έχει μια δωρεάν αξιολόγηση και φαίνεται πολύ ωραίο.

Εδώ είναι ένα παράδειγμα που πήρα από εδώ :

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()
Απαντήθηκε 20/08/2008 στις 02:20
πηγή χρήστη

ψήφοι
14

Δημιούργησα μια απλή βιβλιοθήκη για να δημιουργήσετε έναν κωδικό πρόσβασης κρυπτογραφημένο αρχείο zip σε python. - εδώ

import pyminizip

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

Η βιβλιοθήκη απαιτεί zlib.

Έχω ελέγξει ότι το αρχείο μπορεί να εξαχθεί στο Windows / Mac.

Απαντήθηκε 17/04/2013 στις 02:39
πηγή χρήστη

ψήφοι
5

Το αντίγραφο ερώτηση https://stackoverflow.com/a/2366917/874188 συνιστά τη χρήση 7zαντί του zip. Η εμπειρία μου φέρει αυτό έξω.

Αντιγραφή / επικόλληση την απάντηση από @JFSebastian εδώ για λόγους πληρότητας:

Για να δημιουργήσετε κρυπτογραφημένη αρχειοθήκη zip (το όνομά του 'myarchive.zip') με τη χρήση open-source 7-Zipχρησιμότητα:

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

Για να εγκαταστήσετε το 7-Zip, τύπου:

$ sudo apt-get install p7zip-full

Για να αποσυμπιέσετε με το χέρι (για να αποδείξει συμβατότητα με φερμουάρ utitity), τύπος:

$ unzip myarchive.zip

Και εισέλθουν P4$$W0rdστη γραμμή.

Ή το ίδιο σε Python 2.6+:

>>> zipfile.ZipFile('myarchive.zip').extractall(pwd='P4$$W0rd')
Απαντήθηκε 12/12/2014 στις 12:27
πηγή χρήστη

ψήφοι
-1

@ Απάντηση tripleee βοήθησε εμένα, δείτε τεστ μου παρακάτω.

Αυτός ο κωδικός λειτουργεί για μένα σε python 3.5.2 για τα Windows 8.1 ( 7z διαδρομή προστίθεται στο σύστημα).

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

Με δύο παραμέτρους:

  1. -mx9 σημαίνει max συμπίεση
  2. -pSecret^)σημαίνει κωδικός πρόσβασης είναι Secret^). ^έχει ξεφύγει )για τα Windows OS, αλλά όταν αποσυμπιέσετε, θα πρέπει πληκτρολογήστε το ^.

Χωρίς ^τα Windows OS δεν θα εφαρμόσει τον κωδικό πρόσβασης όταν 7z.exe τη δημιουργία του zip αρχείου.

Επίσης, αν θέλετε να χρησιμοποιήσετε το -mheδιακόπτη, θα χρειαστείτε τη μορφή του αρχείου να είναι σε 7z αντί για φερμουάρ .

Ελπίζω ότι μπορεί να βοηθήσει.

Απαντήθηκε 20/10/2016 στις 21:18
πηγή χρήστη

ψήφοι
0

pyminizipλειτουργεί μεγάλο για τη δημιουργία ενός προστατεύεται με κωδικό πρόσβασης αρχείο zip. Για unziping, αποτυγχάνει σε ορισμένες περιπτώσεις. Δοκιμάστηκε σε python 3.7.3

Εδώ, χρησιμοποίησα pyminizip για την κρυπτογράφηση του αρχείου.

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

Για unzip, θα χρησιμοποιηθεί ενότητα αρχείο zip:

from zipfile import ZipFile

with ZipFile('/home/paulsteven/dst.zip') as zf:
    zf.extractall(pwd=b'password')
Απαντήθηκε 08/08/2019 στις 07:47
πηγή χρήστη

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