Overzicht
Gegevensbeveiliging is van cruciaal belang in het huidige digitale landschap, en een effectieve manier om gevoelige informatie te beschermen is door middel van encryptie. Dit overzicht begeleidt u bij het coderen of decoderen van een volledig archief of specifieke items daarin, waardoor de vertrouwelijkheid en integriteit van uw gegevens wordt gewaarborgd. Aspose.ZIP faciliteert een reeks bewerkingen met betrekking tot de encryptie en decryptie van archieven.Hoe u het hele ZIP-archief kunt coderen of decoderen
Versleutel Zip-archief met traditionele methode
Er zijn twee versleutelingsmethoden beschikbaar voor ZIP-archief: traditioneel, dat nu als zwak wordt beschouwd, en moderne AES. Met de ZIP-standaard kan elk item met een van deze methoden worden gecodeerd, zelfs binnen hetzelfde archief. AES-codering biedt een sterkere beveiliging en is beschikbaar in verschillende sleutellengtes (128-bit, 192-bit en 256-bit). Het biedt een betere bescherming voor gevoelige gegevens binnen ZIP-archieven.
Bestanden gecomprimeerd met 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);
}
}
Het hele archief coderen met de AES-methode
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);
}
}
}
Deze voorbeelden laten zien hoe u EncryptionSetting instanties kunt insluiten in de overeenkomstige Archive constructor . Dit maakt selectieve versleuteling van individuele vermeldingen mogelijk, waardoor andere niet-versleuteld blijven.
Codeer de tweede vermelding van de drie in 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);
}
}
Hoewel het misschien onconventioneel lijkt, is het inderdaad haalbaar om specifieke vermeldingen in een ZIP-archief te versleutelen met behulp van verschillende versleutelingsmethoden en wachtwoorden. Deze aanpak maakt een meer gedetailleerde en op maat gemaakte beveiligingsstrategie mogelijk, waarbij individuele bestanden of groepen bestanden verschillende beschermingsniveaus kunnen hebben. Het is echter belangrijk op te merken dat deze praktijk het beheer- en decoderingsproces kan bemoeilijken, en dat de compatibiliteit met verschillende ZIP-archieftools kan variëren.
Versleutel Zip met verschillende methoden en wachtwoorden
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);
}
}
Met Aspose.ZIP kunt u encryptie toevoegen aan een bestaand archief zonder de inhoud volledig opnieuw in te pakken. Het is echter belangrijk op te merken dat alle vermeldingen in het archief onbeschermd moeten zijn; anders wordt er een uitzondering gemaakt.
Versleutel het bestaande ZIP-archief
using (var archive = new Archive("plain.zip"))
{
archive.Save("encrypted.zip", new ArchiveSaveOptions()
{
EncryptionOptions = new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)
});
}
Een Zip-archief decoderen
De gebruiker heeft de mogelijkheid om een specifiek item binnen het gecodeerde ZIP-archief of het hele archief als geheel te decoderen.
Decodeer een bepaald item
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);
}
}
Decodeer het hele Zip-archief
In dit geval moeten we een wachtwoord opgeven binnen een constructor.
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);
}
}
}
Hoe u een RAR-archief kunt coderen of decoderen
Een RAR-archief decoderen
Aspose.ZIP ondersteunt geen RAR-archiefcompositie, het ondersteunt alleen extractie.
RAR-archief
kan worden gecodeerd met of zonder bescherming van bestandsnamen.
In het eerste geval moet de gebruiker het decoderingswachtwoord opgeven in
RarArchiveLoadOptions
helemaal aan het begin van de instantiatie van het RAR-archief. In het laatste geval is het mogelijk om het wachtwoord later bij de invoerextractie door te geven.
Decodeer het hele RAR-archief met gecodeerde bestandsnamen
using (RarArchive archive = new RarArchive("source.rar",
new RarArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
archive.ExtractToDirectory("destination");
}
Decodeer een bepaald item uit het RAR-archief
Dit voorbeeld zou werken als alleen de inhoud van de vermeldingen gecodeerd is, maar de bestandsnamen niet.
using (RarArchive archive = new RarArchive("source.rar"))
{
archive.Entries[0].Extract("first_entry.bin", "p@s$");
}
Decodeer een bepaald item uit het RAR-archief als een stream
In dit voorbeeld wordt er echter van uitgegaan dat alleen de inhoud van de vermeldingen wordt gecodeerd, en niet de bestandsnamen. . Dit maakt het kopiëren van invoerbytes naar een geheugenstroom noodzakelijk.
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);
}
}
}
Hoe u het hele 7ZIP-archief kunt coderen of decoderen
Methoden om 7z-archiefbestanden te coderen
De enige optie voor 7z-archiefversleuteling is AES .
Versleutel en comprimeer met het hele 7z-archief van LZMA2
7Z-archieven ondersteunen de mogelijkheid om elk item met een eigen wachtwoord te coderen of onbeschermd te laten.
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);
}
}
Versleutel de vermeldingen van het 7z-archief met eigen wachtwoorden en laat één vermelding onversleuteld
Net als bij ZIP kan de gebruiker het hele archief of een bepaald item daaruit decoderen.
7Z-archief kan worden gecodeerd met of zonder bescherming van bestandsnamen. Als bestandsnamen gecodeerd zijn, moet u een wachtwoord opgeven
bij archivering
.
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);
}
}
Decodeer het hele archief met gecodeerde bestandsnamen naar de map
Of bestandsnamen nu gecodeerd zijn of niet, het is veilig om een wachtwoord op te geven binnen de uitpakkende constructor.
Het onderstaande voorbeeld werkt alleen als alleen de inhoud wordt beschermd.
using (SevenZipArchive archive = new SevenZipArchive("archive.7z", "p@s$"))
{
archive.ExtractToDirectory("C:\\extracted");
}
Decodeer een bepaald item
using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
{
archive.Entries[0].Extract("data.bin", "p@s$");
}
Andere ondersteunde Aspose.ZIP voor .NET API-functies
Gebruik de Aspose.ZIP C#-bibliotheek om zip-bestandsdocumenten te converteren, samen te voegen, te bewerken, gegevens uit de archieven te extraheren en meer!
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