Panoramica
La sicurezza dei dati è fondamentale nel panorama digitale odierno e un modo efficace per salvaguardare le informazioni sensibili è attraverso la crittografia. Questa panoramica ti guiderà su come crittografare o decrittografare un intero archivio o voci specifiche al suo interno, garantendo la riservatezza e l'integrità dei tuoi dati. Aspose.ZIP facilita una serie di operazioni relative alla crittografia e decrittografia degli archivi.Come crittografare o decrittografare l'intero archivio ZIP
Crittografa l'archivio Zip con il metodo tradizionale
Sono disponibili due metodi di crittografia per l’archivio ZIP: tradizionale, considerato ora debole, e moderno AES. Lo standard ZIP consente di crittografare qualsiasi voce con uno di questi metodi anche all’interno dello stesso archivio. La crittografia AES offre una maggiore sicurezza ed è disponibile con chiavi di diverse lunghezze (128 bit, 192 bit e 256 bit). Fornisce una migliore protezione per i dati sensibili all’interno degli archivi ZIP.
File compressi con 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);
}
}
Crittografia dell'intero archivio con il metodo 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);
}
}
}
Questi esempi mostrano come incorporare istanze di EncryptionSetting nel corrispondente Costruttore di archivio . Ciò consente la crittografia selettiva delle singole voci, mantenendo le altre non crittografate.
Crittografa la seconda voce delle tre nell'archivio zip
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);
}
}
Sebbene possa sembrare non convenzionale, è effettivamente possibile crittografare voci specifiche all’interno di un archivio ZIP utilizzando diversi metodi di crittografia e password. Questo approccio consente una strategia di sicurezza più granulare e personalizzata, in cui singoli file o gruppi di file possono avere livelli di protezione distinti. Tuttavia, è importante notare che questa pratica potrebbe complicare il processo di gestione e decrittografia e la compatibilità con i vari strumenti di archiviazione ZIP potrebbe variare.
Crittografa Zip con metodi e password diversi
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 consente di aggiungere la crittografia a un archivio esistente senza reimballare completamente i contenuti. Tuttavia, è importante notare che tutte le voci dell’archivio non devono essere protette; in caso contrario verrà sollevata un’eccezione.
Crittografa l'archivio ZIP esistente
using (var archive = new Archive("plain.zip"))
{
archive.Save("encrypted.zip", new ArchiveSaveOptions()
{
EncryptionOptions = new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)
});
}
Decifrare un archivio Zip
L’utente ha la possibilità di decrittografare una voce specifica all’interno dell’archivio ZIP crittografato o l’intero archivio nel suo insieme.
Decifrare una voce particolare
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);
}
}
Decrittografa l'intero archivio Zip
In questo caso dobbiamo fornire la password all’interno di un costruttore.
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);
}
}
}
Come crittografare o decrittografare l'archivio RAR
Decifrare un archivio RAR
Aspose.ZIP non supporta la composizione dell’archivio RAR, supporta solo l’estrazione.
L’archivio RAR
può essere crittografato con o senza protezione dei nomi dei file.
Nel primo caso l’utente deve fornire la password di decrittazione all’interno di
RarArchiveLoadOptions
all’inizio dell’istanziazione dell’archivio RAR. In quest’ultimo caso è possibile passare la password successivamente all’estrazione della voce.
Decrittografa l'intero archivio RAR con nomi di file crittografati
using (RarArchive archive = new RarArchive("source.rar",
new RarArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
archive.ExtractToDirectory("destination");
}
Decifrare una voce particolare dall'archivio RAR
Questo esempio funzionerebbe se solo il contenuto delle voci fosse crittografato ma i nomi dei file no.
using (RarArchive archive = new RarArchive("source.rar"))
{
archive.Entries[0].Extract("first_entry.bin", "p@s$");
}
Decrittografa una voce particolare dall'archivio RAR come flusso
Tuttavia, in questo esempio , il presupposto è che solo il contenuto delle voci sia crittografato, non i nomi dei file . Ciò richiede la copia dei byte di ingresso in un flusso di memoria.
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);
}
}
}
Come crittografare o decrittografare l'intero archivio 7ZIP
Metodi per crittografare i file di archivio 7z
L’unica opzione di crittografia dell’archivio 7z è AES .
Crittografa e comprimi con LZMA2 l'intero archivio 7z
Gli archivi 7Z supportano la possibilità di crittografare ogni voce con la propria password o di lasciarla non protetta.
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);
}
}
Crittografa le voci dell'archivio 7z con le proprie password e lascia una voce non crittografata
Simile a ZIP, l’utente può decrittografare l’intero archivio o una voce specifica da esso.
L’archivio 7Z può essere crittografato con o senza protezione dei nomi dei file. Se i nomi dei file sono crittografati, è necessario fornire una password
durante la creazione di un’istanza dell’archivio
.
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);
}
}
Decrittografa l'intero archivio con nomi di file crittografati nella directory
Indipendentemente dal fatto che i nomi dei file siano crittografati o meno, è sicuro fornire la password all’interno del costruttore di estrazione.
L’esempio seguente funzionerà solo quando è protetto solo il contenuto.
using (SevenZipArchive archive = new SevenZipArchive("archive.7z", "p@s$"))
{
archive.ExtractToDirectory("C:\\extracted");
}
Decifrare una voce particolare
using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
{
archive.Entries[0].Extract("data.bin", "p@s$");
}
Altre funzionalità API Aspose.ZIP per .NET supportate
Utilizza la libreria Aspose.ZIP C# per convertire, unire, modificare documenti in file zip, estrarre dati dagli archivi e altro ancora!
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