개요
데이터 보안은 오늘날의 디지털 환경에서 가장 중요하며 중요한 정보를 보호하는 효과적인 방법 중 하나는 암호화를 이용하는 것입니다. 이 개요는 전체 아카이브 또는 그 안에 있는 특정 항목을 암호화하거나 해독하여 데이터의 기밀성과 무결성을 보장하는 방법을 안내합니다. 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 인스턴스를 삽입하는 방법을 보여줍니다. com/zip/net/aspose.zip/archive/archive/#archive-constructor-1-of-4). 이를 통해 개별 항목을 선택적으로 암호화하고 다른 항목은 암호화되지 않은 상태로 유지할 수 있습니다.
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);
}
}
색다른 것처럼 보일 수도 있지만, 다양한 암호화 방법과 비밀번호를 사용하여 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 아카이브
는 파일 이름을 보호하거나 보호하지 않고 암호화할 수 있습니다.
전자의 경우 사용자는 RAR 아카이브 인스턴스화 초기에
RarArchiveLoadOptions
내에 암호 해독 비밀번호를 제공해야 합니다. 후자의 경우 나중에 항목 추출 시 비밀번호를 전달할 수 있습니다.
암호화된 파일 이름으로 전체 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 입니다.
LZMA2 전체 7z 아카이브로 암호화 및 압축
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$");
}
.NET API 기능에 대해 지원되는 기타 Aspose.ZIP
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