개요

데이터 보안은 오늘날의 디지털 환경에서 가장 중요하며 중요한 정보를 보호하는 효과적인 방법 중 하나는 암호화를 이용하는 것입니다. 이 개요는 전체 아카이브 또는 그 안에 있는 특정 항목을 암호화하거나 해독하여 데이터의 기밀성과 무결성을 보장하는 방법을 안내합니다. 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

  
  

Aspose.Zip offers individual archive processing APIs for other popular development environments, listed below: