Обзор
Безопасность данных имеет первостепенное значение в современном цифровом мире, и одним из эффективных способов защиты конфиденциальной информации является шифрование. Этот обзор расскажет вам, как зашифровать или расшифровать весь архив или отдельные записи в нем, гарантируя конфиденциальность и целостность ваших данных. Aspose.ZIP облегчает ряд операций, связанных с шифрованием и дешифрованием архивов.Как зашифровать или расшифровать весь ZIP-архив
Зашифруйте Zip-архив традиционным методом.
Для ZIP-архива доступны два метода шифрования: традиционный, который сейчас считается слабым, и современный AES. Стандарт ZIP позволяет шифровать любую запись любым из этих методов даже в пределах одного архива. Шифрование AES обеспечивает более высокий уровень безопасности и доступно с ключами различной длины (128-бит, 192-бит и 256-бит). Он обеспечивает лучшую защиту конфиденциальных данных в ZIP-архивах.
Файлы, сжатые с помощью 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);
}
}
Шифрование всего архива методом 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);
}
}
}
В этих примерах показано, как встроить экземпляры EncryptionSetting в соответствующий конструктор архива . Это позволяет выборочное шифрование отдельных записей, оставляя другие незашифрованными.
Зашифруйте вторую запись из трех в 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);
}
}
Хотя это может показаться нетрадиционным, на самом деле вполне возможно зашифровать определенные записи в ZIP-архиве, используя различные методы шифрования и пароли. Такой подход позволяет реализовать более детализированную и настраиваемую стратегию безопасности, при которой отдельные файлы или группы файлов могут иметь разные уровни защиты. Однако важно отметить, что такая практика может усложнить процесс управления и дешифрования, а совместимость с различными инструментами ZIP-архивирования может различаться.
Зашифруйте 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, 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 позволяет добавить шифрование в существующий архив без полной перепаковки содержимого. Однако важно отметить, что все записи архива должны быть незащищенными; в противном случае будет возбуждено исключение.
Зашифровать существующий ZIP-архив
using (var archive = new Archive("plain.zip"))
{
archive.Save("encrypted.zip", new ArchiveSaveOptions()
{
EncryptionOptions = new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)
});
}
Расшифровка Zip-архива
Пользователь имеет возможность расшифровать либо конкретную запись в зашифрованном ZIP-архиве, либо весь архив целиком.
Расшифровать конкретную запись
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);
}
}
Расшифровать весь Zip-архив
В этом случае нам нужно указать пароль в конструкторе.
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);
}
}
}
Как зашифровать или расшифровать архив RAR
Расшифровка RAR-архива
Aspose.ZIP не поддерживает композицию архива RAR, он поддерживает только извлечение.
Архив RAR
может быть зашифрован с защитой имен файлов или без нее.
В первом случае пользователю необходимо указать пароль для расшифровки в
RarArchiveLoadOptions
в самом начале создания экземпляра архива RAR. В последнем случае можно передать пароль позже при извлечении записи.
Расшифровать весь архив RAR с зашифрованными именами файлов
using (RarArchive archive = new RarArchive("source.rar",
new RarArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
archive.ExtractToDirectory("destination");
}
Расшифровать конкретную запись из архива RAR
Этот пример будет работать, если зашифровано только содержимое записей, а имена файлов — нет.
using (RarArchive archive = new RarArchive("source.rar"))
{
archive.Entries[0].Extract("first_entry.bin", "p@s$");
}
Расшифровать конкретную запись из архива RAR как поток.
Однако в этом примере предполагается, что шифруется только содержимое записей, а не имена файлов. . Это требует копирования входных байтов в поток памяти.
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);
}
}
}
Как зашифровать или расшифровать весь архив 7ZIP
Методы шифрования архивных файлов 7z
Единственный вариант шифрования архива 7z — AES .
Зашифруйте и сжимайте весь архив 7z с помощью LZMA2.
Архивы 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(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);
}
}
Зашифруйте записи архива 7z собственными паролями и оставьте одну запись незашифрованной.
Как и в случае с ZIP, пользователь может расшифровать как весь архив, так и отдельную запись из него.
Архив 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$")));
archive.CreateEntry("fields.c", source3, false, new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("$ecret")));
archive.Save(szFile);
}
}
Расшифровать весь архив с зашифрованными именами файлов в каталог
Независимо от того, зашифрованы имена файлов или нет, можно безопасно указать пароль в конструкторе извлечения.
Приведенный ниже пример будет работать только в том случае, если защищен только контент.
using (SevenZipArchive archive = new SevenZipArchive("archive.7z", "p@s$"))
{
archive.ExtractToDirectory("C:\\extracted");
}
Расшифровать конкретную запись
using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
{
archive.Entries[0].Extract("data.bin", "p@s$");
}
Другие поддерживаемые функции Aspose.ZIP для .NET API
Используйте библиотеку Aspose.ZIP C# для преобразования, объединения, редактирования документов в виде zip-файлов, извлечения данных из архивов и многого другого!
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