2010-02-03 21 views

Respuesta

5

La extracción es muy fácil, solo se usa zipfile.ZipFile.setpassword() que se introdujo en python 2.6, sin embargo, la biblioteca de python estándar carece de soporte para crear archivos zip encriptados.

Hay bibliotecas disponibles comercialmente para Python que admiten la creación de archivos zip cifrados y protegidos por contraseña. Si desea utilizar algo libremente disponible, debe utilizar la utilidad de línea de comandos estándar zip.

postal -e -Pcontraseña filename.zip FILEB archivoA ...

+1

Bollocks. "" "ZipFile.setpassword (pwd) Establezca pwd como contraseña predeterminada para extraer los archivos cifrados."" " No funciona ** creando ** un zip con una contraseña. –

+0

Gracias por mencionar que John, he actualizado la entrada para mencionar una solución de utilidad de línea de comandos en su lugar. –

+0

No veo' -P' en la utilidad 'zip' estándar.' Zip --help | grep -i -e '-p'' no devuelve nada (Ubuntu, Zip 3.0 (5 de julio de 2008), por Info-ZIP). Utilizo open- fuente de solución en mi respuesta: http://stackoverflow.com/questions/2195747/python-code-to-create-a-password-encrypted-zip-file/2366917#2366917 – jfs

1

Si Python no es una necesidad y se puede usar utilidades del sistema, herramientas como zip o rar proporciona compresión encriptada contraseña. zip con la opción -e, y rar con -p.

+2

Incluso puede llamar a estas herramientas desde python con subproceso .Popen – Nikwin

22

Para crear archivo zip encriptado (llamado 'myarchive.zip') utilizando código abierto 7-Zip utilidad:

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

Para instalar 7-Zip , tipo:

$ sudo apt-get install p7zip-full 

para descomprimir con la mano (para demostrar la compatibilidad con utitity postal), Tipo:

$ unzip myarchive.zip 

y entrar P4$$W0rd en el indicador.

o el mismo en Python 2.6+:

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

+1 7-Zip también está disponible en Windows. Es compatible con muchos formatos de compresión/archivo, no solo zip. –

+0

zipfile.ZipFile no crea un archivo zip encriptado. Solo puede leer archivos zip encriptados. Pyminizip hace esto como se indica en el enlace. – shadowbq

+0

@shado WBQ: sí. 'ZipFile' puede * extraer * (* descomprimir *) el archivo encriptado. Si pudiera crear los archivos encriptados; no necesitarías la utilidad '7z'. 'pyminizip' no existía en 2010. No sé qué tan conveniente (para instalar) o confiable (en comparación con' 7z') 'pyminizip' es - su estado de desarrollo es * alpha *. – jfs

0

Usted puede utilizar Pygpgme para crear un archivo gpg protegido por contraseña, que se comprime.

Tendrá que utilizar el equivalente de gpg -c myFile o gpg --symmetric myFile y gpg myFile.gpg

No sé lo que los equivalentes están en ese módulo Python , pero sé que han existido desde la versión 0.2. Hubo un informe de error antes de mencionar la falta, pero alguien lanzó un parche y lo arreglaron en la versión 0.2.

Esto utiliza encriptación simétrica para que no tenga que preocuparse por las claves.

Puede encontrar mi publicación preguntando cómo usarla en UbuntuForums. Siéntase libre de responderlo si lo sabe.

Cuestiones relacionadas