Överblick
Datasäkerhet är av största vikt i dagens digitala landskap, och ett effektivt sätt att skydda känslig information är genom kryptering. Den här översikten guidar dig om hur du krypterar eller dekrypterar ett helt arkiv eller specifika poster i det, vilket säkerställer konfidentialitet och integritet för dina data. Aspose.ZIP underlättar en rad operationer som hänför sig till kryptering och dekryptering av arkiv.Hur man krypterar eller dekrypterar hela ZIP-arkivet
Kryptera Zip-arkiv med traditionell metod
Det finns två krypteringsmetoder tillgängliga för ZIP-arkiv: traditionell, anses vara svag nu, och modern AES. ZIP-standarden tillåter att alla poster krypteras med någon av dessa metoder även inom samma arkiv. AES-kryptering ger starkare säkerhet och finns i olika nyckellängder (128-bitars, 192-bitars och 256-bitars). Det ger bättre skydd för känsliga data i ZIP-arkiv.
Filer komprimerade med 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);
}
}
Krypterar hela arkivet med AES-metoden
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);
}
}
}
Dessa exempel visar hur du bäddar in EncryptionSetting -instanser i motsvarande Arkivkonstruktor . Detta möjliggör selektiv kryptering av enskilda poster, vilket håller andra okrypterade.
Kryptera den andra posten av de tre i 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);
}
}
Även om det kan verka okonventionellt, är det verkligen möjligt att kryptera specifika poster i ett ZIP-arkiv med olika krypteringsmetoder och lösenord. Detta tillvägagångssätt möjliggör en mer detaljerad och anpassad säkerhetsstrategi, där enskilda filer eller grupper av filer kan ha distinkta skyddsnivåer. Det är dock viktigt att notera att denna praxis kan komplicera hanteringen och dekrypteringsprocessen, och kompatibiliteten med olika ZIP-arkivverktyg kan variera.
Kryptera Zip med olika metoder och lösenord
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 låter dig lägga till kryptering till ett befintligt arkiv utan att helt packa om innehållet. Det är dock viktigt att notera att alla poster i arkivet måste vara oskyddade; annars kommer ett undantag att tas upp.
Kryptera befintligt ZIP-arkiv
using (var archive = new Archive("plain.zip"))
{
archive.Save("encrypted.zip", new ArchiveSaveOptions()
{
EncryptionOptions = new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)
});
}
Dekrypterar ett Zip-arkiv
Användaren har möjlighet att dekryptera antingen en specifik post i det krypterade ZIP-arkivet eller hela arkivet som helhet.
Dekryptera en viss post
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);
}
}
Dekryptera hela Zip-arkivet
I det här fallet måste vi tillhandahålla lösenord inom en konstruktor.
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);
}
}
}
Hur man krypterar eller dekrypterar RAR-arkiv
Dekrypterar ett RAR-arkiv
Aspose.ZIP stöder inte RAR-arkivkomposition, det stöder bara extraktion.
RAR-arkiv
kan krypteras med eller utan skyddande filnamn.
I det förra fallet måste användaren ange ett dekrypteringslösenord inom
RarArchiveLoadOptions
i början av RAR-arkivinstanseringen. I det senare fallet är det möjligt att skicka lösenordet senare vid ingångsextraktion.
Dekryptera hela RAR-arkivet med krypterade filnamn
using (RarArchive archive = new RarArchive("source.rar",
new RarArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
archive.ExtractToDirectory("destination");
}
Dekryptera en viss post från RAR-arkivet
Det här exemplet skulle fungera om bara innehållet i poster är krypterat men inte filnamnen.
using (RarArchive archive = new RarArchive("source.rar"))
{
archive.Entries[0].Extract("first_entry.bin", "p@s$");
}
Dekryptera en viss post från RAR-arkivet som en ström
I det här exemplet är dock antagandet att endast innehållet i poster är krypterat, inte filnamnen . Detta nödvändiggör kopiering av ingångsbytes till en minnesström.
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);
}
}
}
Hur man krypterar eller dekrypterar hela 7ZIP-arkivet
Metoder för att kryptera 7z-arkivfiler
Det enda alternativet för 7z-arkivkryptering är AES .
Kryptera och komprimera med LZMA2 hela 7z-arkivet
7Z arkiv stöder en förmåga att kryptera varje post med eget lösenord eller lämna oskyddad.
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);
}
}
Kryptera poster i 7z-arkiv med egna lösenord och lämna en post okrypterad
På samma sätt som ZIP kan användaren dekryptera antingen hela arkivet eller en viss post från det.
7Z-arkivet kan krypteras med eller utan skyddande filnamn. Om filnamnen är krypterade måste du ange lösenord
vid arkivinstansering
.
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);
}
}
Dekryptera hela arkivet med krypterade filnamn till katalogen
Oavsett om filnamnen är krypterade eller inte, är det säkert att ange lösenord i extraherande konstruktor.
Exemplet nedan fungerar bara när endast innehåll är skyddat.
using (SevenZipArchive archive = new SevenZipArchive("archive.7z", "p@s$"))
{
archive.ExtractToDirectory("C:\\extracted");
}
Dekryptera en viss post
using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
{
archive.Entries[0].Extract("data.bin", "p@s$");
}
Andra Aspose.ZIP för .NET API-funktioner som stöds
Använd Aspose.ZIP C#-biblioteket för att konvertera, slå samman, redigera zip-fildokument, extrahera data från arkiven och mer!
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