Overview
Aspose.ZIP facilite une gamme d’opérations de chiffrement et de déchiffrement pour les archives. En utilisant l’API Aspose.Zip pour Python.NET, vous pouvez chiffrer et déchiffrer efficacement les archives ZIP, RAR et 7-Zip.Chiffrer les fichiers ZIP
Deux techniques de chiffrement peuvent être utilisées pour les archives ZIP la méthode traditionnelle plus ancienne, maintenant considérée comme moins sécurisée, et le chiffrement AES moderne et plus robuste. La norme ZIP permet le chiffrement d’entrées individuelles dans la même archive en utilisant l’une ou l’autre méthode. Le chiffrement AES, connu pour sa sécurité renforcée, prend en charge diverses longueurs de clé, notamment 128 bits, 192 bits et 256 bits, offrant une protection accrue pour les données sensibles dans les archives ZIP. Chaque entrée dans la même archive peut être chiffrée avec son propre chiffrement, vous pouvez donc mélanger différents types de chiffrement dans la même archive.
Déverrouiller ZIP avec la méthode 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)
Le code crée un nouveau fichier ZIP nommé archive.zip, compresse le contenu de alice29.txt en utilisant la méthode de compression Deflate, le chiffre avec la méthode de chiffrement traditionnelle ZIP en utilisant le mot de passe "p@s$S", et enregistre le fichier compressé et chiffré dans la nouvelle archive ZIP.
Chiffrer le ZIP avec 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)
Le code fourni montre comment créer une archive ZIP nommée archive.zip, compresser un fichier alice29.txt à l’aide de la méthode de compression Deflate et le chiffrer avec le cryptage AES-256 à l’aide du mot de passe "p@s$S". Pour ces exemples, nous avons fourni des instances de
EncryptionSetting
dans le
Constructeur d’archive
. Il est possible d’appliquer le cryptage pour une entrée particulière en laissant les autres non protégées.
Cela montre la flexibilité de l’application du cryptage à des entrées spécifiques dans une archive ZIP, permettant à différents fichiers d’avoir des niveaux de protection distincts. Cette approche permet une stratégie de sécurité plus granulaire et personnalisée, dans laquelle des fichiers individuels ou des groupes de fichiers peuvent avoir des niveaux de protection distincts. Cependant, il est important de noter que cette pratique peut compliquer le processus de gestion et de décryptage, et que la compatibilité avec divers outils d’archives ZIP peut varier.
Chiffrer ZIP la deuxième entrée sur trois
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)
Ce code montre la création d’une archive ZIP protégée par mot de passe en Python. Il ajoute trois fichiers: alice29.txt, asyoulik.txt et field.c.
Voici comment cela fonctionne:
Ouvre ou crée un fichier pour l’archive ZIP en fonction du nom stocké dans this.resultFile. Crée des objets FileInfo pour représenter les fichiers à ajouter. Crée un nouvel objet d’archive.
Ajoute des fichiers: alice29.txt et field.c sont ajoutés à l’archive sans aucun paramètre particulier. asyoulik.txt est ajouté avec le cryptage AES-256, nécessitant le mot de passe p@s$ pour le décryptage. Enregistre l’archive terminée dans le fichier spécifié.
Crypter ZIP avec différentes méthodes et mots de passe
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)
Cet extrait de code montre la création d’une archive ZIP en Python dans laquelle les fichiers individuels sont chiffrés avec différentes méthodes et mots de passe. Voici comment cela fonctionne:
Configuration du fichier: Ouvre ou crée un fichier pour l’archive ZIP en fonction du nom stocké dans this.resultFile. Crée des objets FileInfo représentant les fichiers à ajouter: alice29.txt, asyoulik.txt et field.c.
Création de l’archive: Crée un nouvel objet d’archive (archive).
Ajout de fichiers cryptés: Le code utilise une boucle pour parcourir les fichiers et les ajouter à l’archive avec des paramètres de cryptage spécifiques:
– alice29.txt
- Ce fichier est ajouté avec ** Cryptage AES-256** et nécessite le mot de passe "p@s" pour le décryptage.
– asyoulik.txt
- Ce fichier est ajouté avec une méthode de cryptage différente appelée Cryptage traditionnel. Il utilise également un mot de passe distinct, "p@s", pour le décryptage.
– fields.c
- Ce fichier est à nouveau ajouté avec cryptage AES-128, mais avec un mot de passe différent, "p@s$3", pour le décryptage.
Sauvegarde de l’archive: Enfin, le code enregistre l’archive terminée contenant les fichiers cryptés dans le fichier spécifié.
Crypter l’archive ZIP avec différentes méthodes et mots de passe
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)
Ce code prend une archive ZIP existante plain.zip, crypte son contenu en utilisant AES-256 avec le mot de passe p@s$ et enregistre la version cryptée en tant que nouvelle archive nommée encrypted.zip.
Décrypter les fichiers ZIP
Décrypter le fichier ZIP avec mot de passe
with zp.Archive("source.zip") as archive:
archive.entries[0].extract("first_entry.bin", "p@s$")
L’utilisateur a la possibilité de décrypter une entrée spécifique dans l’archive ZIP cryptée. Cet extrait de code illustre une approche de base pour déchiffrer la première entrée d’une archive ZIP protégée par mot de passe. Si le mot de passe est correct, l’archive s’ouvre avec succès.
Décrypter tout le fichier 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")
Ce code simple prend une archive ZIP protégée par mot de passe "source.zip", utilise le mot de passe fourni "p@s$S" pour le décryptage et extrait tout son contenu dans un dossier désigné "destination".
Décrypter le fichier RAR
Aspose.ZIP ne prend pas en charge la composition des archives RAR, il prend uniquement en charge l’extraction. L’archive RAR peut être cryptée avec ou sans protection des noms de fichiers.
Dans le premier cas, l’utilisateur doit fournir un mot de passe de décryptage dans
RarArchiveLoadOptions
au tout début de l’instanciation de l’archive RAR. Dans ce dernier cas, il est possible de transmettre le mot de passe ultérieurement lors de l’extraction des entrées.
Décrypter toute l’archive RAR avec les noms de fichiers cryptés
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")
Essentiellement, ce code fonctionne de la même manière que l’exemple ZIP mais fonctionne spécifiquement pour les archives RAR. Il prend une archive RAR protégée par mot de passe "source.rar", utilise le mot de passe fourni "p@s $S" pour le décryptage, et extrait tout son contenu dans un dossier désigné "destination".
Déchiffrer une entrée particulière de l’archive RAR
with zp.rar.RarArchive("source.rar") as archive:
archive.entries[0].extract("first_entry.bin", "p@s$S")
Ce code ouvre l’archive RAR source.rar, décrypte et extrait la première entrée de l’archive à l’aide du mot de passe "p@s$S" et l’enregistre dans le fichier first_entry.bin. Cet exemple fonctionnera si seul le contenu des entrées est crypté mais pas les noms de fichiers.
Déchiffrer une entrée particulière de l’archive RAR sous forme de flux
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())
Ce code ouvre l’archive RAR source.rar, décrypte le deuxième enregistrement de l’archive en utilisant le mot de passe "p@s$S" et lit son contenu dans un ByteArrayOutputStream. En utilisant un tampon de lecture, le code garantit un transfert progressif des données, ce qui permet de gérer efficacement les fichiers volumineux. Cet exemple fonctionnerait si seul le contenu des entrées est crypté mais pas les noms de fichiers. Dans cet exemple, les octets d’entrée sont copiés dans le flux mémoire.
Cryptage 7zip avec AES 256
La seule option de cryptage d’archive 7z est AES . L’archive utilise la compression LZMA2 pour une réduction efficace de la taille des fichiers et le cryptage AES avec le mot de passe pour une sécurité accrue. Le code parcourt les fichiers et les ajoute à l’archive à l’aide de la méthode CreateEntry.
Crypter et compresser l’intégralité de l’archive 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)
Ce code crée une archive 7z cryptée contenant trois fichiers: alice29.txt, asyoulik.txt et field.c. L’archive utilise la compression LZMA2 et le cryptage AES avec le mot de passe "p@s$S". Les fichiers sont ajoutés à l’archive à l’aide de la méthode CreateEntry et l’archive elle-même est enregistrée dans le fichier archive.7z créé.
7z Chiffrer avec mot de passe
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)
Ce code crée une archive 7z cryptée contenant trois fichiers: alice29.txt, asyoulik.txt et field.c. Le premier fichier est ajouté à l’archive sans paramètres particuliers. Le deuxième fichier est joint à l’aide de la compression LZMA2 et du cryptage AES. avec le mot de passe "p@s$S". Le troisième fichier est joint en utilisant la compression LZMA2 et le cryptage AES avec le mot de passe "$ecret". Enfin, l’archive est enregistrée dans l’archive. Fichier 7z.
Semblable au ZIP, l’utilisateur peut décrypter l’intégralité de l’archive ou une entrée particulière de celle-ci. L’archive 7Z peut être cryptée avec ou sans protection des noms de fichiers. Si les noms de fichiers sont cryptés, vous devez fournir un mot de passe sur
instanciation de l’archive
.
Décrypter les fichiers 7ZIP
Décrypter l’archive 7z avec les noms de fichiers cryptés
with zp.sevenzip.SevenZipArchive("archive.7z", "p@s$S") as archive:
archive.extract_to_directory("c:\extracted")
Que les noms de fichiers soient cryptés ou non, il est prudent de fournir un mot de passe dans le constructeur d’extraction. L’exemple ci-dessous ne fonctionnera que lorsque seul le contenu est protégé.
Déchiffrer une entrée particulière 7zip
with zp.sevenzip.SevenZipArchive("archive.7z") as archive:
archive.entries[0].extract("data.bin", "p@s$S")
Que les noms de fichiers soient cryptés ou non, il est prudent de fournir un mot de passe dans le constructeur d’extraction. L’exemple ci-dessous ne fonctionnera que lorsque seul le contenu est protégé.
Autres fonctionnalités de l’API Aspose.ZIP pour Python.Net prises en charge
Avec la bibliothèque Aspose.ZIP dans Python.Net, vous pouvez gérer de manière transparente diverses tâches liées aux documents de fichiers ZIP. Que vous ayez besoin de convertir des formats, de fusionner des fichiers, de modifier du contenu ou d’extraire des données, Aspose.ZIP fournit des fonctionnalités complètes pour rationaliser votre flux de travail et améliorer votre productivité.
Support and Learning Resources
- Ressources d’apprentissage
- Documentation
- Code source
- Références API
- Support produit
- Assistance gratuite
- Assistance payante
- Blog
- Notes de version
- Pourquoi Aspose.Zip pour Python.Net ?
- Liste des clients
- Réussites