Aperçu
La sécurité des données est primordiale dans le paysage numérique actuel, et le chiffrement constitue un moyen efficace de protéger les informations sensibles. Cet aperçu vous guidera sur la façon de crypter ou de déchiffrer une archive entière ou des entrées spécifiques qu'elle contient, garantissant ainsi la confidentialité et l'intégrité de vos données. Aspose.ZIP facilite une gamme d'opérations relatives au cryptage et au déchiffrement des archives.Comment chiffrer ou décrypter l'intégralité d'une archive ZIP
Crypter l'archive Zip avec la méthode traditionnelle
Il existe deux méthodes de cryptage disponibles pour les archives ZIP : la traditionnelle, considérée comme faible actuellement, et la moderne AES. La norme ZIP permet de chiffrer n’importe quelle entrée avec l’une ou l’autre de ces méthodes, même au sein de la même archive. Le cryptage AES offre une sécurité renforcée et est disponible en différentes longueurs de clé (128 bits, 192 bits et 256 bits). Il offre une meilleure protection des données sensibles dans les archives ZIP.
Fichiers compressés avec Deflate
using (var zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new TraditionalEncryptionSettings("p@s$")));
archive.CreateEntry("alice29.txt", source);
archive.Save(zipFile);
}
}
Cryptage de l'archive entière avec la méthode AES
using (var zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
{
archive.CreateEntry("alice29.txt", source);
archive.Save(zipFile);
}
}
}
Ces exemples montrent comment intégrer des instances EncryptionSetting dans le Constructeur d’archive . Cela permet le cryptage sélectif des entrées individuelles, gardant les autres non cryptées.
Chiffrer la deuxième entrée des trois dans Zip Archive
using (FileStream zipFile = File.Open(this.resultFile, FileMode.Create))
{
FileInfo source1 = new FileInfo("alice29.txt");
FileInfo source2 = new FileInfo("asyoulik.txt");
FileInfo source3 = new FileInfo("fields.c");
using (var archive = new Archive())
{
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik.txt", source2, false, new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)));
archive.CreateEntry("fields.c", source3);
archive.Save(zipFile);
}
}
Bien que cela puisse paraître peu conventionnel, il est en effet possible de chiffrer des entrées spécifiques dans une archive ZIP en utilisant différentes méthodes de chiffrement et mots de passe. 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.
Crypter Zip avec différentes méthodes et mots de passe
using (FileStream zipFile = File.Open(this.resultFile, FileMode.Create))
{
FileInfo source1 = new FileInfo("alice29.txt");
FileInfo source2 = new FileInfo("asyoulik.txt");
FileInfo source3 = new FileInfo("fields.c");
using (var archive = new Archive())
{
archive.CreateEntry("alice29.txt", source1, false, new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$1", EncryptionMethod.AES256)));
archive.CreateEntry("asyoulik.txt", source2, false, new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$2")));
archive.CreateEntry("fields.c", source3, false, new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$3", EncryptionMethod.AES256)));
archive.Save(zipFile);
}
}
Aspose.ZIP vous permet d’ajouter un cryptage à une archive existante sans reconditionner complètement le contenu. Cependant, il est important de noter que toutes les entrées de l’archive ne doivent pas être protégées ; sinon, une exception sera levée.
Chiffrer l'archive ZIP existante
using (var archive = new Archive("plain.zip"))
{
archive.Save("encrypted.zip", new ArchiveSaveOptions()
{
EncryptionOptions = new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)
});
}
Décrypter une archive Zip
L’utilisateur a la possibilité de décrypter soit une entrée spécifique dans l’archive ZIP cryptée, soit l’intégralité de l’archive dans son ensemble.
Décrypter une entrée particulière
using (var zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new TraditionalEncryptionSettings("p@s$")));
archive.CreateEntry("alice29.txt", source);
archive.Save(zipFile);
}
}
Décrypter toute l'archive Zip
Dans ce cas, nous devons fournir un mot de passe dans un constructeur.
using (var zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
{
archive.CreateEntry("alice29.txt", source);
archive.Save(zipFile);
}
}
}
Comment chiffrer ou décrypter les archives RAR
Décrypter une archive RAR
Aspose.ZIP ne prend pas en charge la composition des archives RAR, il prend uniquement en charge l’extraction.
Archive RAR
peut être chiffrée avec ou sans protection des noms de fichiers.
Dans le premier cas, l’utilisateur doit fournir un mot de passe de déchiffrement 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
using (RarArchive archive = new RarArchive("source.rar",
new RarArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
archive.ExtractToDirectory("destination");
}
Décrypter une entrée particulière de l'archive RAR
Cet exemple fonctionnerait si seul le contenu des entrées est chiffré, mais pas les noms de fichiers.
using (RarArchive archive = new RarArchive("source.rar"))
{
archive.Entries[0].Extract("first_entry.bin", "p@s$");
}
Décrypter une entrée particulière de l'archive RAR sous forme de flux
Cependant, dans cet exemple , l’hypothèse est que seul le contenu des entrées est chiffré, pas les noms de fichiers. . Cela nécessite de copier les octets d’entrée dans un flux mémoire.
MemoryStream destination = new MemoryStream();
using (RarArchive archive = new RarArchive("source.rar"))
{
using (var source = archive.Entries[1].Open("p@s$"))
{
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0)
{
destination.Write(buffer, 0, bytesRead);
}
}
}
Comment chiffrer ou décrypter l'intégralité d'une archive 7ZIP
Méthodes pour chiffrer les fichiers d'archives 7z
La seule option de cryptage d’archive 7z est AES .
Crypter et compresser avec l'archive entière 7z LZMA2
Les archives 7Z prennent en charge la possibilité de crypter chaque entrée avec son propre mot de passe ou de la laisser sans protection.
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$"))))
{
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik.txt", source2);
archive.CreateEntry("fields.c", source3);
archive.Save(szFile);
}
}
Cryptez les entrées de l'archive 7z avec vos propres mots de passe et laissez une entrée non cryptée
Semblable au ZIP, l’utilisateur peut déchiffrer l’archive entière 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
lors de l’instanciation de l’archive
.
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$")));
archive.CreateEntry("fields.c", source3, false, new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("$ecret")));
archive.Save(szFile);
}
}
Décrypter l'archive entière avec les noms de fichiers cryptés dans le répertoire
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é.
using (SevenZipArchive archive = new SevenZipArchive("archive.7z", "p@s$"))
{
archive.ExtractToDirectory("C:\\extracted");
}
Décrypter une entrée particulière
using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
{
archive.Entries[0].Extract("data.bin", "p@s$");
}
Autres fonctionnalités de l'API Aspose.ZIP pour .NET prises en charge
Utilisez la bibliothèque Aspose.ZIP C# pour convertir, fusionner, modifier des documents au format zip, extraire des données des archives, et bien plus encore !
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 .NET?
- Customers List
- Success Stories