Descripción general
Aspose.ZIP facilita una variedad de operaciones de cifrado y descifrado de archivos. Con la API Aspose.Zip para Python.NET, puede cifrar y descifrar de manera eficiente archivos ZIP, RAR y 7-Zip.Cifrar archivos ZIP
Se pueden utilizar dos técnicas de cifrado para archivos ZIP: el método tradicional más antiguo, ahora considerado menos seguro, y el cifrado AES moderno, más robusto. El estándar ZIP permite el cifrado de entradas individuales dentro del mismo archivo utilizando cualquiera de los métodos. El cifrado AES, conocido por su mayor seguridad, admite varias longitudes de clave, incluidas 128 bits, 192 bits y 256 bits, lo que ofrece una protección mejorada para datos confidenciales dentro de archivos ZIP. Cada entrada en el mismo archivo puede cifrarse con su propio cifrado, por lo que puede mezclar diferentes tipos de cifrado en el mismo archivo.
Desbloquear ZIP con el método Deflate
with open("archive.zip", 'x') as zip_file:
with open("alice29.txt") as source:
method = zp.saving.CompressionSettings.deflate
encryption = zp.saving.TraditionalEncryptionSettings("p@s$S")
archive = zp.Archive(zp.saving.ArchiveEntrySettings(method, encryption))
archive.create_entry("alice29.txt", source)
archive.save(zip_file)
El código crea un nuevo archivo ZIP llamado archive.zip, comprime el contenido de alice29.txt usando el método de compresión Deflate, lo cifra con el método de cifrado ZIP tradicional usando la contraseña “p@s$S” y guarda el archivo comprimido y cifrado. archivo al archivo ZIP recién creado.
Cifrar ZIP con AES
with open("archive.zip", 'x') as zip_file:
with open("alice29.txt") as source:
method = zp.saving.CompressionSettings.deflate
encryption = zp.saving.AesEcryptionSettings("p@s$S", zp.saving.EncryptionMethod.AES256)
archive = zp.Archive(zp.saving.ArchiveEntrySettings(method, encryption))
archive.create_entry("alice29.txt", source)
archive.save(zip_file)
El código proporcionado demuestra cómo crear un archivo ZIP llamado archive.zip, comprimir un archivo alice29.txt usando el método de compresión Deflate y cifrarlo con cifrado AES-256 usando la contraseña “p@s$S”. Para estos ejemplos proporcionamos instancias de
EncryptionSetting
dentro del [Constructor de archivos] correspondiente (
https://reference.aspose.com
/zip/net/aspose.zip/archive/archive/#archive-constructor-1-of-4). Es posible aplicar cifrado a una entrada concreta dejando otras desprotegidas.
Esto muestra la flexibilidad de aplicar cifrado a entradas específicas dentro de un archivo ZIP, permitiendo que diferentes archivos tengan distintos niveles de protección. Este enfoque permite una estrategia de seguridad más granular y personalizada, donde los archivos individuales o grupos de archivos pueden tener distintos niveles de protección. Sin embargo, es importante tener en cuenta que esta práctica puede complicar el proceso de administración y descifrado, y la compatibilidad con varias herramientas de archivo ZIP puede variar.
Cifrar ZIP la segunda entrada de tres
with open("archive.zip", 'x') as zip_file:
encrypted_entry = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$", zp.saving.EncryptionMethod.AES256))
with zp.Archive as archive:
archive.create_entry("alice29.txt", "alice29.txt")
archive.create_entry("asyoulik.txt", "asyoulik.txt", false, encrypted_entry)
archive.create_entry("fields.c", "fields.c")
archive.save(zip_file)
Este código demuestra la creación de un archivo ZIP protegido con contraseña en Python. Agrega tres archivos: alice29.txt, asyoulik.txt y campos.c.
Así es como funciona:
Abre o crea un archivo para el archivo ZIP basado en el nombre almacenado en this.resultFile. Crea objetos FileInfo para representar los archivos que se agregarán. Crea un nuevo objeto de archivo.
Agrega archivos: alice29.txt y campos.c se agregan al archivo sin ninguna configuración especial. asyoulik.txt se agrega con cifrado AES-256, lo que requiere la contraseña p@s$ para descifrarlo. Guarda el archivo completo en el archivo especificado.
Cifrar ZIP con diferentes métodos y contraseñas
with open("archive.zip", 'x') as zip_file:
encrypted_1 = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$1", zp.saving.EncryptionMethod.AES256))
encrypted_2 = zp.saving.ArchiveEntrySettings(None, zp.saving.TraditionalEncryptionSettings("p@s$2"))
encrypted_3 = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$3", zp.saving.EncryptionMethod.AES128))
with zp.Archive as archive:
archive.create_entry("alice29.txt", "alice29.txt", false, encrypted_1)
archive.create_entry ("asyoulik.txt", "asyoulik.txt", false, encrypted_2)
archive.create_entry("fields.c", "fields.c", false, encrypted_3)
archive.save(zip_file)
Este fragmento de código demuestra la creación de un archivo ZIP en Python donde los archivos individuales se cifran con diferentes métodos y contraseñas. Así es como funciona:
Configuración de archivo: Abre o crea un archivo para el archivo ZIP según el nombre almacenado en this.resultFile. Crea objetos FileInfo que representan los archivos que se agregarán: alice29.txt, asyoulik.txt y campos.c.
Creando el archivo: Crea un nuevo objeto de archivo (archivo).
Agregar archivos cifrados: El código utiliza un bucle para recorrer los archivos y agregarlos al archivo con configuraciones de cifrado específicas:
– alice29.txt
- Este archivo se agrega con ** Cifrado AES-256** y requiere la contraseña “p@s” para descifrarlo.
– asyoulik.txt
- Este archivo se agrega con un método de cifrado diferente llamado Cifrado tradicional. También utiliza una contraseña separada, “p@s”, para descifrar.
– fields.c
- Este archivo se agrega con cifrado AES-128 nuevamente, pero con una contraseña diferente, “p@s$3”, para descifrarlo.
Guardar el archivo: Finalmente, el código guarda el archivo completo que contiene los archivos cifrados en el archivo especificado.
Cifrar archivo ZIP con diferentes métodos y contraseñas
with zp.Archive("plain.zip") as archive:
save_options = zp.saving.ArchiveSaveOptions()
save_options.encryption_options = zp.saving.AesEcryptionSettings("p@s$", zp.saving.EncryptionMethod.AES256)
archive.save("encrypted.zip", save_options)
Este código toma un archivo ZIP existente plain.zip, cifra su contenido usando AES-256 con la contraseña p@s$ y guarda la versión cifrada como un nuevo archivo llamado encrypted.zip.
Descifrar archivos ZIP
Descifrar archivo ZIP con contraseña
with zp.Archive("source.zip") as archive:
archive.entries[0].extract("first_entry.bin", "p@s$")
El usuario tiene la opción de descifrar una entrada específica dentro del archivo ZIP cifrado. Este fragmento de código demuestra un enfoque básico para descifrar la primera entrada de un archivo ZIP protegido con contraseña. Si la contraseña es correcta, el archivo se abre correctamente.
Descifrar todo el archivo ZIP
load_options = zp.ArchiveLoadOptions()
load_options.decryption_password = "p@s$S"
with zp.Archive("source.zip", load_options) as archive:
archive.extract_to_directory("destination")
Este código simple toma un archivo ZIP protegido con contraseña “source.zip”, utiliza la contraseña proporcionada “p@s$S” para descifrarlo y extrae todo su contenido a una carpeta designada como “destino”.
Descifrar archivo RAR
Aspose.ZIP no admite la composición de archivos RAR, solo admite la extracción. El archivo RAR se puede cifrar con o sin protección de nombres de archivos.
En el primer caso, el usuario debe proporcionar una contraseña de descifrado dentro de
RarArchiveLoadOptions
al comienzo de la creación de instancias del archivo RAR. En el último caso, es posible pasar la contraseña más adelante durante la extracción de la entrada.
Descifre todo el archivo RAR con nombres de archivos cifrados
load_options = zp.rar.RarArchiveLoadOptions()
load_options.decryption_password = "p@s$S"
with zp.rar.RarArchive("source.rar", load_options) as archive:
archive.extract_to_directory("destination")
Básicamente, este código funciona de manera similar al ejemplo ZIP pero funciona específicamente para archivos RAR. Toma un archivo RAR protegido con contraseña “source.rar”, utiliza la contraseña proporcionada “p@s$S” para descifrarlo y extrae todo su contenido a una carpeta designada como “destino”.
Descifrar una entrada particular del archivo RAR
with zp.rar.RarArchive("source.rar") as archive:
archive.entries[0].extract("first_entry.bin", "p@s$S")
Este código abre el archivo RAR source.rar, descifra y extrae la primera entrada del archivo usando la contraseña “p@s$S” y la guarda en el archivo first_entry.bin. Este ejemplo funcionaría si solo se cifra el contenido de las entradas, pero no los nombres de los archivos.
Descifrar una entrada particular del archivo RAR como una secuencia
with io.FileIO("file.bin", "xb") as destination:
with zp.rar.RarArchive("source.rar") as archive:
with archive.entries[0].open("p@s$S") as source:
destination.write(source.readall())
Este código abre el archivo RAR source.rar, descifra el segundo registro del archivo usando la contraseña “p@s$S” y lee su contenido en un ByteArrayOutputStream. Al utilizar un búfer de lectura, el código garantiza una transferencia de datos gradual, lo que ayuda a manejar archivos grandes de manera eficiente. Este ejemplo funcionaría si solo se cifra el contenido de las entradas, pero no los nombres de los archivos. En este ejemplo, los bytes de entrada se copian al flujo de memoria.
Cifrado 7zip con aes 256
La única opción de cifrado de archivos 7z es AES . El archivo utiliza compresión LZMA2 para reducir eficientemente el tamaño del archivo y cifrado AES con la contraseña para mayor seguridad. El código recorre los archivos y los agrega al archivo utilizando el método CreateEntry.
Cifrar y comprimir todo el archivo 7zip
with open("archive.7z", 'xb') as sz_file:
compression = zp.saving.SevenZipLZMA2CompressionSettings()
encryption = zp.saving.SevenZipAESEncryptionSettings("p@s$S")
entry_settings = zp.saving.SevenZipEntrySettings(compression, encryption)
with zp.sevenzip.SevenZipArchive(entry_settings) as archive:
archive.create_entry("alice29.txt", "alice29.txt")
archive.create_entry("asyoulik.txt", "asyoulik.txt")
archive.create_entry("fields.c", "fields.c")
archive.save(sz_file)
Este código crea un archivo 7z cifrado que contiene tres archivos: alice29.txt, asyoulik.txt y campos.c. El archivo utiliza compresión LZMA2 y cifrado AES con la contraseña “p@s$S”. Los archivos se agregan al archivo mediante el método CreateEntry y el archivo en sí se guarda en el archivo archive.7z creado.
7z cifrar con contraseña
with open("archive.7z", 'xb') as sz_file:
compression = zp.saving.SevenZipLZMA2CompressionSettings()
entry_pass1 = zp.saving.SevenZipEntrySettings(compression, zp.saving.SevenZipAESEncryptionSettings("p@s$S"))
entry_pass2 = zp.saving.SevenZipEntrySettings(compression, zp.saving.SevenZipAESEncryptionSettings("$ecret"))
with zp.sevenzip.SevenZipArchive(entry_settings) as archive:
archive.create_entry("alice29.txt", "alice29.txt")
archive.create_entry("asyoulik.txt", "asyoulik.txt", false, entry_pass1)
archive.create_entry("fields.c", "fields.c", false, entry_pass2)
archive.save(sz_file)
Este código crea un archivo 7z cifrado que contiene tres archivos: alice29.txt, asyoulik.txt y campos.c. El primer archivo se agrega al archivo sin configuraciones especiales. El segundo archivo se adjunta mediante compresión LZMA2 y cifrado AES con la contraseña “p@s$S”. El tercer archivo se adjunta mediante compresión LZMA2 y cifrado AES con la contraseña “$ecret”. Finalmente, el archivo se guarda en el archivo archive.7z.
Similar al ZIP, el usuario puede descifrar el archivo completo o una entrada particular del mismo. El archivo 7Z se puede cifrar con o sin protección de nombres de archivos. Si los nombres de los archivos están cifrados, debe proporcionar una contraseña en
creación de instancias de archivo
.
Descifrar archivos 7ZIP
Descifrar archivos 7z con nombres de archivos cifrados
with zp.sevenzip.SevenZipArchive("archive.7z", "p@s$S") as archive:
archive.extract_to_directory("c:\extracted")
Ya sea que los nombres de los archivos estén cifrados o no, es seguro proporcionar una contraseña dentro del constructor de extracción. El siguiente ejemplo solo funcionará cuando solo el contenido esté protegido.
Descifrar entrada particular de 7zip
with zp.sevenzip.SevenZipArchive("archive.7z") as archive:
archive.entries[0].extract("data.bin", "p@s$S")
Ya sea que los nombres de los archivos estén cifrados o no, es seguro proporcionar una contraseña dentro del constructor de extracción. El siguiente ejemplo solo funcionará cuando solo el contenido esté protegido.
Otras características compatibles de Aspose.ZIP para Python.Net API
Con la biblioteca Aspose.ZIP en Python.Net, puede manejar sin problemas diversas tareas relacionadas con documentos de archivos ZIP. Ya sea que necesite convertir formatos, fusionar archivos, editar contenidos o extraer datos, Aspose.ZIP proporciona una funcionalidad integral para optimizar su flujo de trabajo y mejorar la productividad.
Support and Learning Resources
- Recursos de aprendizaje
- Documentación
- Código fuente
- Referencias de API
- Soporte de producto
- Soporte gratuito
- Soporte pagado
- Blog
- Notas de lanzamiento
- ¿Por qué Aspose.Zip para Python.Net?
- Lista de clientes
- Historias de éxito