Description générale
Aspose.ZIP facilite une série d'opérations liées au cryptage et au décryptage des fichiers. Avec l'API Aspose.Zip pour Java, vous pouvez rapidement crypter et déchiffrer les archives ZIP, RAR et 7-Zip.Crypter/déchiffrer les fichiers ZIP
Il existe deux méthodes de cryptage disponibles pour les archives ZIP la méthode traditionnelle, désormais considérée comme faible, et la méthode AES moderne. La norme ZIP permet de chiffrer n’importe quelle entrée avec n’importe quelle méthode, même dans le fichier ZIP lui-même. Le cryptage AES offre une plus grande sécurité et est disponible en différentes longueurs de clé (128 bits, 192 bits et 256 bits). Cela offre une meilleure protection des données sensibles stockées dans les fichiers ZIP.
Chiffrer un ZIP avec la méthode Deflate
try (FileOutputStream zipFile = new FileOutputStream("archive.zip")) {
try (FileInputStream source = new FileInputStream("alice29.txt")) {
Archive archive = new Archive(new ArchiveEntrySettings(CompressionSettings.getDeflate(), new TraditionalEncryptionSettings("p@s$S")));
archive.createEntry("alice29.txt", source);
archive.save(zipFile);
}
} catch (IOException ex) {
System.err.println(ex.getMessage());
}
Ce code crée un fichier ZIP appelé "archive.zip" en utilisant la méthode de compression Deflate et le cryptage ZIP traditionnel. Il y parvient en ouvrant d’abord un nouveau flux de sortie pour le fichier à l’aide de try FileOutputStream. La source FileInputStream sert de flux d’entrée pour le fichier source " alice29.txt " qui sera ajouté au fichier. Ensuite, un objet File est créé, spécifiant à la fois la méthode de compression Deflate et le cryptage traditionnel. Le mot de passe pour le cryptage est défini sur "p@s$S". L’instruction catch gère toutes les exceptions pouvant survenir lors des opérations d’archivage ou d’archivage en imprimant un message d’erreur sur la console.
Chiffrer ZIP avec la méthode AES
try (FileOutputStream zipFile = new FileOutputStream("archive.zip")) {
try (FileInputStream source = new FileInputStream("alice29.txt")) {
try (Archive archive = new Archive(new ArchiveEntrySettings(CompressionSettings.getDeflate(), new AesEncryptionSettings("p@s$S", EncryptionMethod.AES256)))) {
archive.createEntry("alice29.txt", source);
archive.save(zipFile);
}
}
} catch (IOException ex) {
System.err.println(ex.getMessage());
}
Ce code crée un fichier ZIP appelé "archive.zip" à l’aide de la méthode de compression Deflate et crypte les données avec le puissant algorithme AES-256.
Pour ces exemples, nous fournissons des instances de
EncryptionSetting
dans le
File Builder
. Il est possible d’appliquer le cryptage à une entrée spécifique tout en laissant les autres sans protection.
A l'aide de l'algorithme de cryptage ZIP, cryptez le deuxième entre trois
try (FileOutputStream zipFile = new FileOutputStream("archive.zip")) {
File source1 = new File("alice29.txt");
File source2 = new File("asyoulik.txt");
File source3 = new File("fields.c");
try (Archive archive = new Archive()) {
archive.createEntry("alice29.txt", source1);
archive.createEntry("asyoulik.txt", source2, false, new ArchiveEntrySettings(null, new AesEncryptionSettings("p@s$S", EncryptionMethod.AES256)));
archive.createEntry("fields.c", source3);
archive.save(zipFile);
}
} catch (IOException ex) {
System.err.println(ex.getMessage());
}
Ce code montre la création d’un fichier ZIP avec trois fichiers d’entrée "alice29.txt", "asyoulik.txt" et "fields.c". Seuls le premier et le dernier fichiers sont ajoutés non chiffrés, tandis que le deuxième fichier, " asyoulik.txt ", est protégé par mot de passe à l’aide du cryptage AES-256 avec le mot de passe " p@s$ Oui.
Cette approche consistant à chiffrer sélectivement les fichiers dans une archive ZIP est rare. Cependant, l’API Aspose.Zip pour Java fournit la fonctionnalité permettant de chiffrer des entrées spécifiques dans un fichier ZIP à l’aide de différentes méthodes de chiffrement et mots de passe. Bien que cela améliore la sécurité des données, cela complique le processus de gestion et de décryptage des fichiers.
Crypter ZIP avec différentes méthodes et mots de passe
try (FileOutputStream zipFile = new FileOutputStream("archive.zip")) {
File source1 = new File("alice29.txt");
File source2 = new File("asyoulik.txt");
File source3 = new File("fields.c");
try (Archive archive = new Archive()) {
archive.createEntry("alice29.txt", source1, false, new ArchiveEntrySettings(null, new AesEncryptionSettings("p@s$S", EncryptionMethod.AES256)));
archive.createEntry("asyoulik.txt", source2, false, new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$D")));
archive.createEntry("fields.c", source3, false, new ArchiveEntrySettings(null, new AesEncryptionSettings("p@s$F", EncryptionMethod.AES256)));
archive.save(zipFile);
}
} catch (IOException ex) {
System.err.println(ex.getMessage());
}
Ce code crée un fichier ZIP contenant trois fichiers cryptés "alice29.txt", "asyoulik.txt" et "fields.c". Chaque fichier est chiffré à l’aide d’une méthode différente.
La première partie reflète la fonctionnalité de l’exemple de code ci-dessus. La section principale se concentre sur la création d’entrées dans le fichier pour chaque fichier. Ces entrées font référence à leurs noms et fichiers source (objets fichier). Le cryptage est appliqué avec différentes méthodes
- "alice29.txt" cryptage AES-256 avec le mot de passe "p@s$S"
- "asyoulik.txt" méthode de chiffrement traditionnelle avec le mot de passe "p@s$D"
- "fields.c" Cryptage AES-256 avec le mot de passe "p@s$F"
Chiffrer le fichier ZIP existant
try (Archive archive = new Archive("plain.zip")) {
ArchiveSaveOptions options = new ArchiveSaveOptions();
options.setEncryptionOptions(new AesEncryptionSettings("p@s$S", EncryptionMethod.AES256));
archive.save("encrypted.zip", options);
}
Ce code prend un fichier "plain.zip" existant, applique le cryptage AES avec le mot de passe "p@s$S" et l’enregistre sous un nouveau fichier appelé " encrypted.zip ".
Décrypter le fichier ZIP avec mot de passe
try (Archive archive = new Archive("source.zip")) {
archive.getEntries().get(0).extract("first_entry.bin", "p@s$S");
}
Ce code extrait la première entrée du fichier " source.zip " et l’enregistre sous forme de fichier appelé " first_entry.bin ". en utilisant le mot de passe "p@s$S".
L’utilisateur a la possibilité de décrypter une entrée spécifique dans le fichier ZIP crypté ou l’intégralité du fichier dans son ensemble
Décrypter l'intégralité du fichier ZIP
ArchiveLoadOptions options = new ArchiveLoadOptions();
options.setDecryptionPassword("p@s$S");
try (Archive archive = new Archive("source.zip", options)) {
archive.extractToDirectory("destination");
}
Dans ce cas, nous devons fournir un mot de passe dans un constructeur.
Crypter/déchiffrer les fichiers RAR avec Java
Aspose.ZIP ne fournit pas de fonctionnalité pour créer des
archives RAR
; ne prend en charge que l’extraction. Un fichier RAR peut être crypté, avec la possibilité de protéger ou non les noms de fichiers.
Dans le scénario ci-dessus, l’utilisateur doit fournir le mot de passe de déchiffrement dans l’objet
RarArchiveLoadOptions
lors de l’initialisation du Archives RAR. Dans ce dernier cas, le mot de passe peut être fourni lors de l’extraction des entrées individuelles.
Décrypter les fichiers RAR avec des noms de fichiers cryptés
RarArchiveLoadOptions options = new RarArchiveLoadOptions();
options.setDecryptionPassword("p@s$S");
try (RarArchive archive = new RarArchive("source.rar", options)) {
archive.extractToDirectory("destination");
}
Ce code décrypte et extrait le contenu du fichier " source.rar " dans le dossier " destination ". Si le fichier est chiffré, il utilise le mot de passe de déchiffrement spécifié.
Voici un aperçu de son fonctionnement
- Charger la configuration avec le mot de passe de déchiffrement Tout d’abord, créez un objet de configuration de chargement pour le fichier. . Archive RAR à l’aide de l’opérateur d’options RarArchiveLoadOptions. Définissez ensuite le mot de passe de décryptage du fichier à l’aide de la méthode options.setDecryptionPassword.
- Ouvrir le fichier crypté La ligne suivante ouvre le fichier "source.rar" pour le lire et le modifier à l’aide d’une version de test avec des ressources. Spécifie l’objet d’options avec le mot de passe de déchiffrement pour gérer les fichiers cryptés.
- Extraire le contenu de l’archive Enfin, la méthode archive.extractToDirectory extrait le contenu du fichier déchiffré dans 34 ;destin". dossier.
Fichier RAR de décryptage ciblé
try (RarArchive archive = new RarArchive("source.rar")) {
archive.getEntries().get(0).extract("first_entry.bin", "p@s$S");
}
Cet extrait de code tente d’extraire la première entrée de l’archive RAR " source.rar " ; et enregistrez-le sous "first_entry.bin", en utilisant le mot de passe de décryptage "p@s$S" si le fichier est crypté.
Décrypter le contenu d'une entrée RAR spécifique (streaming)
ByteArrayOutputStream destination = new ByteArrayOutputStream();
try (RarArchive archive = new RarArchive("source.rar")) {
try (InputStream source = archive.getEntries().get(1).open("p@s$S")) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = source.read(buffer, 0, buffer.length)) > 0) {
destination.write(buffer, 0, bytesRead);
}
} catch (IOException ex) {
System.err.println(ex.getMessage());
}
}
Cet extrait de code pointe vers une entrée spécifique dans une archive RAR. Décrypte le contenu de l’entrée et le transmet directement à la mémoire, en supposant que seules les données de l’entrée sont chiffrées, pas les noms de fichiers eux-mêmes.
Une description complète de ce que fait le code
- Initialisation du tampon mémoire une destination nommée ByteArrayOutputStream est créée pour servir de tampon en mémoire pour stocker le contenu déchiffré de l’entrée de destination.
- Accès aux fichiers et entrée le code utilise un test avec -Resource Block pour ouvrir l’archive RAR source "source.rar". À l’intérieur d’un autre bloc de test doté de ressources, récupère un flux d’entrée pour la deuxième entrée et le déchiffre à l’aide du mot de passe "p@s$S".
- Déchiffrement et transmission octets déchiffrés sont lus à partir du flux d’entrée en morceaux à l’aide d’un tampon. Chaque morceau est ensuite écrit dans la destination ByteArrayOutputStream jusqu’à ce que toutes les données soient traitées.
- Gestion des erreurs le code intègre un bloc catch pour gérer toutes les exceptions IOExceptions pouvant survenir pendant le processus de décryptage ou de transmission. Si une erreur se produit, le message d’erreur est imprimé dans le flux d’erreurs standard à des fins de débogage.
Crypter et décrypter les fichiers 7-ZIP avec Java
Il sera implémenté dans Aspose.ZIP pour Java version 24.4. La seule option de cryptage de fichiers 7z est AES.
Crypter et compresser les fichiers 7-Zip avec LZMA2
using (FileStream szFile = File.Open("archive.7z", FileMode.Create))
{
FileInfo source1 = new FileInfo("alice29.txt");
FileInfo source2 = new FileInfo("asyoulik.txt");
FileInfo source3 = new FileInfo("fields.c");
using (var archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("p@s$S"))))
{
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik.txt", source2);
archive.CreateEntry("fields.c", source3);
archive.Save(szFile);
}
}
Les fichiers 7Z prennent en charge la possibilité de crypter chaque entrée avec son propre mot de passe ou de la laisser non protégée. Ce code crée un nouveau fichier 7z avec compression et cryptage LZMA2 et AES.
- Ouverture de fichier Un FileStream est utilisé pour ouvrir un nouveau fichier nommé "archive.7z" en mode création.
- Initialisation de l’objet trois objets FileInfo sont créés pour les fichiers "alice29.txt", "asyoulik.txt" et "fields.c".
- Création d’une archive 7-zip Lobjet SevenZipArchive est créé avec
- Les paramètres de compression LZMA2.
- Configuration du cryptage AES à l’aide du mot de passe "p@s$S" - Ajouter des fichiers Les méthodes CreateEntry sont utilisées pour ajouter chaque fichier à l’archive à partir d’un fichier distinct. Fontaine.
- Enregistrez le fichier Le fichier est enregistré dans le flux de fichiers szFile à l’aide de la méthode Save.
Cryptage sélectif sur le fichier 7z
using (FileStream szFile = File.Open("archive.7z", FileMode.Create))
{
FileInfo source1 = new FileInfo("alice29.txt");
FileInfo source2 = new FileInfo("asyoulik.txt");
FileInfo source3 = new FileInfo("fields.c");
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik.txt", source2, false, new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("p@s$S")));
archive.CreateEntry("fields.c", source3, false, new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("$ecret")));
archive.Save(szFile);
}
}
Ce code crée un fichier 7z contenant trois fichiers "alice29.txt", "asyoulik.txt" et "fields.c". Les deux derniers fichiers sont compressés et cryptés avec des mots de passe différents.
Contrairement au code précédent, la méthode archive.CreateEntry est utilisée sur l’objet archive pour créer des entrées pour chaque fichier. Lors de la création de l’entrée pour "asyoulik.txt" à partir de l’objet FileInfo source2, le troisième paramètre de CreateEntry est défini sur false. Cela indique que des paramètres de compression et de chiffrement personnalisés seront utilisés, définis dans le quatrième paramètre (un objet SevenZipEntrySettings). Dans ce cas, la configuration spécifie "Zip LZMA2" et "Zip AES" avec le mot de passe "p@s$S".
Semblable au ZIP, l’utilisateur peut décrypter l’intégralité du fichier ou une entrée particulière.
Archive 7Z
peut être chiffrée avec ou noms de fichiers non protégés. Si les noms de fichiers sont chiffrés, vous devez fournir un mot de passe
lors de la création d’instances de fichiers
.
Décrypter 7z avec les noms de fichiers cryptés
try (SevenZipArchive archive = new SevenZipArchive("archive.7z", "p@s$S")) {
archive.extractToDirectory("C:\\extracted");
}
Ce code utilise un bloc try avec des ressources pour ouvrir un fichier 7z appelé "archive.7z". protégé par le mot de passe "p@s$S". Extrayez ensuite le contenu du fichier dans le dossier "C"extrait".
Que les noms de fichiers soient chiffrés ou non, il est prudent de fournir un mot de passe dans le constructeur d’extrait. L’exemple suivant ne fonctionnera que lorsque seul le contenu est protégé.
Déchiffrer l'entrée spécifique à 7z
try (SevenZipArchive archive = new SevenZipArchive("archive.7z")) {
archive.getEntries().get(0).extract("data.bin", "p@s$S");
}
Ce code utilise un bloc try avec des ressources pour ouvrir un fichier 7z appelé "archive.7z". protégé par le mot de passe "p@s$S". Extrayez ensuite le contenu du fichier dans le dossier "C"extrait".
Que les noms de fichiers soient chiffrés ou non, il est prudent de fournir un mot de passe dans le constructeur d’extrait. L’exemple suivant ne fonctionnera que lorsque seul le contenu est protégé.
Autres fonctions de l'API Aspose.ZIP pour les projets Java en charge
Avec la bibliothèque Aspose.ZIP en Java, 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 le 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
- Learning Resources
- Documentation
- Source Code
- API References
- Tutorial Videos
- Product Support
- Free Support
- Paid Support
- Blog
- Release Notes
- Why Aspose.ZIP for Java?
- Customers List
- Success Stories