Crie um arquivo ZIP criptografado em Python

votos
30

Estou criando um arquivo ZIP com ZipFile em Python 2.5, ele funciona ok até agora:

import zipfile, os

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

mas eu não conseguia encontrar a forma para criptografar os arquivos no arquivo ZIP. Eu poderia usar o sistema e chamar PKZIP-s, mas acho que deve haver uma maneira mais Pythonic. Estou à procura de uma solução de código aberto.

Publicado 20/08/2008 em 01:16
fonte usuário
Em outras línguas...                            


4 respostas

votos
14

Eu criei uma biblioteca simples para criar um arquivo zip senha criptografada em python. - aqui

import pyminizip

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

A biblioteca exige zlib.

Tenho verificado que o arquivo pode ser extraído em Windows / Mac.

Respondeu 17/04/2013 em 02:39
fonte usuário

votos
5

A questão duplicado https://stackoverflow.com/a/2366917/874188 recomenda a utilização 7zem vez de zip. Minha experiência confirma isso.

Copiar / colar a resposta por @JFSebastian aqui também para ser completo:

Para criar arquivo zip criptografado (nomeado 'myarchive.zip') usando open-source 7-Ziputilitário:

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

Para instalar o 7-Zip, digite:

$ sudo apt-get install p7zip-full

Para descomprimir pela mão (para demonstrar a compatibilidade com utitity zip), tipo:

$ unzip myarchive.zip

E entrar P4$$W0rdno prompt.

Ou o mesmo em Python 2.6+:

>>> zipfile.ZipFile('myarchive.zip').extractall(pwd='P4$$W0rd')
Respondeu 12/12/2014 em 12:27
fonte usuário

votos
0

Você pode usar o Chilkat biblioteca. É comercial, mas tem uma avaliação gratuita e parece bastante agradável.

Aqui está um exemplo que eu tenho de aqui :

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()
Respondeu 20/08/2008 em 02:20
fonte usuário

votos
-1

@ Resposta de tripleee me ajudou, ver o meu teste abaixo.

Esse código funciona para mim em python 3.5.2 no Windows 8.1 ( 7z caminho adicionado ao sistema).

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

Com dois parâmetros:

  1. -mx9 meios de compressão máxima
  2. -pSecret^)significa senha é Secret^). ^é fugir para )para o Windows OS, mas quando você descompactar, ele precisará digitar o ^.

Sem ^sistema operacional Windows não se aplicará a senha quando 7z.exe criar o zip arquivo.

Além disso, se você quiser usar -mheswitch, você vai precisar do formato de arquivo para a 7z vez de zip .

Espero que pode ajudar.

Respondeu 20/10/2016 em 21:18
fonte usuário

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