2010-02-03 40 views

Trả lời

5

Trích xuất khá dễ dàng, bạn chỉ cần sử dụng zipfile.ZipFile.setpassword() được giới thiệu trong python 2.6, tuy nhiên thư viện python chuẩn thiếu hỗ trợ tạo tệp zip được mã hóa.

Có các thư viện thương mại có sẵn cho Python hỗ trợ tạo tệp zip được mã hóa và bảo vệ bằng mật khẩu. Nếu bạn muốn sử dụng một cái gì đó tự do có sẵn, bạn cần sử dụng tiện ích dòng lệnh zip tiêu chuẩn.

zip -e -Ppassword filename.zip fileB fileA ...

+1

Bollocks. "" "ZipFile.setpassword (pwd) Đặt pwd làm mật khẩu mặc định để trích xuất các tệp được mã hóa."" " Nó không làm ** tạo ** mã zip có mật khẩu. –

+0

Cảm ơn bạn đã đề cập đến John, tôi đã cập nhật mục nhập đề cập đến giải pháp tiện ích dòng lệnh thay thế. –

+0

Tôi không thấy' -P' trên tiện ích 'zip' chuẩn' zip --help | grep -i -e '-p'' không trả về gì cả (Ubuntu, Zip 3.0 (ngày 5 tháng 7 năm 2008), bởi Info-ZIP). giải pháp nguồn trong câu trả lời của tôi: http://stackoverflow.com/questions/2195747/python-code-to-create-a-password-encrypted-zip-file/2366917#2366917 – jfs

1

Nếu Python không phải là một và bạn có thể sử dụng các tiện ích hệ thống, các công cụ như zip hay rar cung cấp mật khẩu được mã hóa nén. zip với tùy chọn -e và rar với -p.

+2

Bạn thậm chí có thể gọi những công cụ này từ python với subprocess .Popen – Nikwin

3

Mật khẩu thực tế ("mật khẩu của bạn") chỉ hợp lệ để trích xuất, không phải để tạo tệp zip.

Các giải pháp (không phải theo ý thích của tôi):

Create an encrypted ZIP file in Python

22

Để tạo lưu trữ zip mã hóa (tên 'myarchive.zip') sử dụng mã nguồn mở 7-Zip tiện ích:

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

Để cài đặt 7-Zip , loại:

$ sudo apt-get install p7zip-full 

Để giải nén bằng tay (để chứng minh khả năng tương thích với utitity zip), gõ:

$ unzip myarchive.zip 

Và nhập P4$$W0rd tại dấu nhắc.

Hoặc như nhau trong Python 2.6+:

>>> zipfile.ZipFile('myarchive.zip').extractall(pwd='P4$$W0rd') 
+2

+1 7-Zip có sẵn trên Windows cũng hỗ trợ nhiều định dạng nén/lưu trữ, không chỉ zip 1. –

+0

zipfile.ZipFile không tạo tệp zip được mã hóa. Nó chỉ có thể đọc từ các tệp zip được mã hóa. như đã nêu trong liên kết. – shadowbq

+0

@shado wbq: vâng. 'ZipFile' có thể * trích xuất * (* giải nén *) kho lưu trữ được mã hóa. Nếu nó có thể tạo lưu trữ được mã hóa; bạn sẽ không cần tiện ích '7z'. 'pyminizip' đã không tồn tại trong năm 2010. Tôi không biết làm thế nào thuận tiện (để cài đặt) hoặc đáng tin cậy (so với' 7z') 'pyminizip' là - trạng thái phát triển của nó là * alpha *. – jfs

0

Bạn có thể sử dụng Pygpgme để tạo ra một tập tin gpg mật khẩu bảo vệ, được nén.

Bạn sẽ cần phải sử dụng tương đương với gpg -c myfile hoặc gpg --symmetric myfile và gpg myFile.gpg

Tôi không biết những gì tương đương là ở chỗ mô-đun Python , nhưng tôi biết họ đã tồn tại kể từ phiên bản 0.2. Đã có một báo cáo lỗi trước khi đề cập đến việc thiếu nó, nhưng ai đó đã phát hành một bản vá và họ đã sửa nó trong phiên bản 0.2.

Điều này sử dụng mã hóa đối xứng để bạn không phải lo lắng về khóa.

Bạn có thể tìm thấy bài đăng của mình yêu cầu cách sử dụng nó trên UbuntuForums. Hãy trả lời nếu bạn biết.

Các vấn đề liên quan