비밀번호로 보호되는 아카이브

Aspose.ZIP API를 사용하면 기본 파일 구조에 대해 걱정하지 않고 C# 또는 모든 .NET 언어로 파일을 압축하고 압축을 풀 수 있습니다. 이 문서에서는 기존 암호화 방식과 AES 암호화 방식을 모두 사용하여 비밀번호 보호를 구현하는 방법에 대한 예를 제공합니다. 또한 혼합 암호화 기술을 사용하여 디렉터리로 작업하고 여러 파일을 압축하는 방법을 보여줍니다.

기존 암호화를 통한 비밀번호 보호

Aspose.ZIP은 압축 파일에 대한 전통적인 비밀번호 보호를 가능하게 합니다. 간단한 비밀번호를 사용하면 아카이브 내의 개별 파일이나 전체 디렉터리를 보호하여 승인된 사용자만 콘텐츠를 추출할 수 있도록 할 수 있습니다.

기존 암호화 방식으로 파일 암호화

더 간단하고 전통적인 암호화 방법을 사용하여 파일을 암호화합니다. 이 접근 방식을 사용하면 아카이브의 기본 비밀번호 보호가 가능하므로 올바른 비밀번호를 사용하여 파일에 액세스할 수 있는 동시에 파일을 안전하게 압축할 수 있습니다.

 1    // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
 2    using (FileStream zipFile = File.Open(dataDir + "CompressWithTraditionalEncryption_out.zip", FileMode.Create))
 3    {
 4        using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
 5        {
 6            var archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$")));
 7            archive.CreateEntry("alice29.txt", source1);
 8            archive.Save(zipFile);
 9        }
10    }

AES 암호화로 파일 암호화

.NET용 Aspose.ZIP은 아카이브 내의 민감한 파일을 보호하는 데 도움이 되는 암호화 기능을 제공합니다. API는 AES 암호화를 지원하여 다양한 보안 수준에 맞는 다양한 키 크기(128비트, 192비트, 256비트)를 제공합니다. 이러한 암호화 방법을 사용하면 데이터가 잘 보호되고 승인된 사용자만 액세스할 수 있습니다.

AES128을 사용한 파일 암호화

.NET용 Aspose.ZIP은 아카이브 내의 민감한 파일을 보호하는 데 도움이 되는 암호화 기능을 제공합니다. API는 AES 암호화를 지원하여 다양한 보안 수준에 맞는 다양한 키 크기(128비트, 192비트, 256비트)를 제공합니다. 이러한 암호화 방법을 사용하면 데이터가 잘 보호되고 승인된 사용자만 액세스할 수 있습니다. 다음은 그 방법의 예입니다.

 1    // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
 2    using (FileStream zipFile = File.Open(dataDir + "PasswordProtectWithAES128_out.zip", FileMode.Create))
 3    {
 4        using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
 5        {
 6            using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
 7            {
 8                archive.CreateEntry("alice29.txt", source1);
 9                archive.Save(zipFile);
10            }
11        }
12    }

AES192를 사용한 파일 암호화

AES192 암호화는 AES128에 비해 암호화 오버헤드가 약간 증가하여 더 높은 수준의 보안을 제공합니다. 이 방법은 성능을 크게 저하시키지 않으면서 더 강력한 보호가 필요한 시나리오에 적합합니다. 사용법을 이해하려면 다음 예제를 확인하세요.

 1    // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
 2    using (FileStream zipFile = File.Open(dataDir + "PasswordProtectWithAES192_out.zip", FileMode.Create))
 3    {
 4        using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
 5        {
 6            using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES192))))
 7            {
 8                archive.CreateEntry("alice29.txt", source1);
 9                archive.Save(zipFile);
10            }
11        }
12    }

AES256을 사용한 파일 암호화

AES256은 AES 제품군에서 사용할 수 있는 가장 강력한 암호화 옵션으로 최대의 보안을 제공합니다. 암호화 및 암호 해독을 위해 더 많은 컴퓨팅 성능이 필요한 경우에도 최대한의 보안이 필요한 매우 민감한 데이터를 보호하는 데 이상적입니다. 아래 예를 참조하세요.

 1    // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
 2    using (FileStream zipFile = File.Open(dataDir + "PasswordProtectWithAES256_out.zip", FileMode.Create))
 3    {
 4        using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
 5        {
 6            using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
 7            {
 8                archive.CreateEntry("alice29.txt", source1);
 9                archive.Save(zipFile);
10            }
11        }
12    }

비밀번호 보호 디렉토리

개별 파일을 암호화하는 것 외에도 Aspose.ZIP을 사용하면 전체 디렉터리를 비밀번호로 보호할 수 있습니다. 이는 여러 파일을 한 번에 암호화해야 할 때 특히 유용하며 단일 비밀번호로 디렉터리 내의 모든 콘텐츠를 보호합니다.

 1// 전체 예제 및 데이터 파일을 보려면 https://github.com/aspose-zip/Aspose.ZIP-for-.NET으로 이동하세요.
 2(FileStream zipFile = File.Open(".\\all_corpus_encrypted_out.zip", FileMode.Create)) 사용
 3{
 4    DirectoryInfo corpus = new DirectoryInfo(".\\CanterburyCorpus");
 5    (var archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$")))) 사용
 6    {
 7        archive.CreateEntries(corpus);
 8        archive.Save(zip파일);
 9    }
10}        

혼합 암호화 기술로 여러 파일 암호화API는 동일한 아카이브 내에서 다양한 암호화 기술 사용을 지원합니다. 이를 통해 민감도 및 보안 요구 사항에 따라 다양한 파일에 AES 및 기존 비밀번호 보호와 같은 암호화 알고리즘을 혼합하여 적용할 수 있습니다. 이러한 유연성을 통해 아카이브 내의 파일 보호를 보다 세밀하게 제어할 수 있습니다. 실제로 어떻게 작동하는지 보려면 이 예제를 살펴보세요.

 1    // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
 2    using (FileStream zipFile = File.Open(dataDir + "CompressWithTraditionalEncryption_out.zip", FileMode.Create))
 3    {
 4        using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
 5        {
 6            var archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$")));
 7            archive.CreateEntry("alice29.txt", source1);
 8            archive.Save(zipFile);
 9        }
10    }

비밀번호로 보호된 파일의 압축 풀기

아카이브를 암호화한 후에는 필요할 때 파일을 해독하고 추출하는 방법도 알아야 합니다. Aspose.ZIP은 기존 암호화 또는 AES 암호화 사용 여부에 관계없이 비밀번호로 보호된 아카이브의 압축 해제를 단순화합니다. 파일을 개별적으로 추출하거나 암호화된 디렉터리 전체의 압축을 풀 수 있습니다.

기존 비밀번호로 보호된 아카이브의 압축 풀기

기존 비밀번호로 보호된 파일을 쉽게 추출할 수 있습니다. 이 방법은 이전 암호화 기술을 사용하여 보안된 아카이브를 처리하여 올바른 비밀번호가 제공되면 데이터에 대한 액세스를 보장합니다.

 1    // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
 2    using (FileStream fs = File.OpenRead(dataDir + "CompressWithTraditionalEncryption_out.zip"))
 3    {
 4        using (var extracted = File.Create(dataDir + "alice_extracted_out.txt"))
 5        {
 6            using (Archive archive = new Archive(fs, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
 7            {
 8                using (var decompressed = archive.Entries[0].Open())
 9                {
10                    byte[] b = new byte[8192];
11                    int bytesRead;
12                    while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
13                    {
14                        extracted.Write(b, 0, bytesRead);
15                    }
16                }
17            }
18        }
19    }

AES 암호화 아카이브 압축 풀기

이 섹션에서는 가장 안전한 암호화 표준 중 하나인 AES를 사용하여 암호화된 파일을 추출하는 방법을 다룹니다. AES128, AES192 또는 AES256을 처리하든 올바른 암호 해독 키가 제공되는 한 추출 프로세스는 간단합니다.

 1    // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
 2    using (FileStream fs = File.OpenRead(dataDir + "PasswordProtectWithAES256_out.zip"))
 3    {
 4        using (var extracted = File.Create(dataDir + "alice_aesextracted_out.txt"))
 5        {
 6            using (Archive archive = new Archive(fs))
 7            {
 8                using (var decompressed = archive.Entries[0].Open("p@s$"))
 9                {
10                    byte[] b = new byte[8192];
11                    int bytesRead;
12                    while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
13                    {
14                        extracted.Write(b, 0, bytesRead);
15                    }
16                }
17            }
18        }
19    }

AES 암호화 저장 아카이브 압축 풀기

암호화되어 압축 없이 저장된 아카이브에서 파일을 추출합니다. 이 프로세스는 압축되지 않은 파일도 안전하게 유지하여 원본 파일 구조를 유지하면서 중요한 데이터를 보호합니다.

 1    // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
 2    using (FileStream fs = File.OpenRead(dataDir + "StoreMutlipleFilesWithoutCompressionWithPassword_out.zip"))
 3    {
 4        using (var extracted = File.Create(dataDir + "alice_aesextracted_out.txt"))
 5        {
 6            using (Archive archive = new Archive(fs, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
 7            {
 8                using (var decompressed = archive.Entries[0].Open())
 9                {
10                    byte[] b = new byte[8192];
11                    int bytesRead;
12                    while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
13                    {
14                        extracted.Write(b, 0, bytesRead);
15                    }
16                }
17            }
18        }
19    }

암호화된 폴더를 디렉터리로 압축 풀기

암호화된 디렉터리 전체를 원래 폴더 구조로 다시 추출합니다. 이 프로세스는 올바른 암호 해독 키가 사용되는 경우 원래 계층 구조와 보안을 유지하면서 암호화된 아카이브의 모든 파일을 지정된 디렉터리로 복원합니다.

1    // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2    using (FileStream zipFile = File.Open(".\\all_corpus_encrypted.zip", FileMode.Open))
3    {
4        new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }).ExtractToDirectory(".\\all_corpus_decrypted");
5    }

아카이브 압축 풀기

.NET용 Aspose.ZIP은 단일 파일, 여러 파일 또는 압축 없이 저장된 파일이 포함되어 있는지 여부에 관계없이 아카이브의 압축을 풀기 위한 사용하기 쉬운 API를 제공합니다. 이 섹션에서는 압축된 데이터를 추출하기 위한 효율적인 솔루션을 제공하는 다양한 압축 해제 시나리오를 보여줍니다.

단일 파일이 있는 아카이브 압축 풀기

아카이브에 파일이 하나만 포함된 시나리오에서는 압축 해제가 간단합니다. 다음 예를 사용하면 최소한의 오버헤드로 아카이브의 콘텐츠를 신속하게 추출하여 원본 데이터 무결성을 보장할 수 있습니다.

 1    // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
 2    using (FileStream fs = File.OpenRead(dataDir + "CompressSingleFile_out.zip"))
 3    {
 4        using (Archive archive = new Archive(fs))
 5        {
 6            int percentReady = 0;
 7            archive.Entries[0].ExtractionProgressed += (s, e) =>
 8            {
 9                int percent = (int)((100 * e.ProceededBytes) / ((ArchiveEntry)s).UncompressedSize);
10                if (percent > percentReady)
11                {
12                    Console.WriteLine(string.Format("{0}% decompressed", percent));
13                    percentReady = percent;
14                }
15            };
16            archive.Entries[0].Extract(dataDir + "alice_extracted_out.txt");
17        }
18    }

여러 파일이 있는 아카이브 압축 풀기

여러 파일이 포함된 아카이브로 작업할 때 API는 항목을 반복하고 효율적으로 추출하는 프로세스를 단순화합니다. 추출 중 이벤트 기반 진행 상황 추적은 대규모 압축 해제 작업을 모니터링하는 데 특히 유용합니다.

 1    // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
 2    using (FileStream zipFile = File.Open(dataDir + "CompressMultipleFiles_out.zip", FileMode.Open))
 3    {
 4        StringBuilder sb = new StringBuilder("Entries are: ");
 5        int percentReady = 0;
 6        using (Archive archive = new Archive(zipFile,
 7            new ArchiveLoadOptions()
 8            {
 9                EntryListed = (s, e) => { sb.AppendFormat("{0}, ", e.Entry.Name); },
10                EntryExtractionProgressed = (s, e) =>
11                {
12                    int percent = (int)((100 * e.ProceededBytes) / ((ArchiveEntry)s).UncompressedSize);
13                    if (percent > percentReady)
14                    {
15                        Console.WriteLine(string.Format("{0}% compressed", percent)); percentReady = percent;
16                    }
17                }
18            }))
19        {
20            Console.WriteLine(sb.ToString(0, sb.Length - 2));
21            using (var extracted = File.Create(dataDir + "alice_extracted_out.txt"))
22            {
23                using (var decompressed = archive.Entries[0].Open())
24                {
25                    byte[] buffer = new byte[8192];
26                    int bytesRead;
27                    while (0 < (bytesRead = decompressed.Read(buffer, 0, buffer.Length)))
28                    {
29                        extracted.Write(buffer, 0, bytesRead);
30                    }
31                    // Read from decompressed stream to extracting file.
32                }
33            }
34            percentReady = 0;
35            archive.Entries[1].Extract(dataDir + "asyoulik_extracted_out.txt");
36        }
37    }

압축하지 않고 저장된 아카이브 추출

압축되지 않은 파일이 포함된 저장된 아카이브도 Aspose.Zip API에서 지원됩니다. 이러한 아카이브는 파일 크기를 줄이지 않지만 저장된 데이터에 대한 빠른 액세스와 효율적인 추출을 허용합니다. 이는 구조를 변경하지 않고 파일을 함께 패키지해야 할 때 유용합니다.

 1    // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
 2    using (FileStream zipFile = File.Open(dataDir + "StoreMultipleFilesWithoutCompression_out.zip", FileMode.Open))
 3    {
 4        using (Archive archive = new Archive(zipFile))
 5        {
 6            using (var extracted = File.Create(dataDir + "alice_extracted_store_out.txt"))
 7            {
 8                using (var decompressed = archive.Entries[0].Open())
 9                {
10                    byte[] buffer = new byte[8192];
11                    int bytesRead;
12                    while (0 < (bytesRead = decompressed.Read(buffer, 0, buffer.Length)))
13                    {
14                        extracted.Write(buffer, 0, bytesRead);
15                    }
16                    // Read from decompressed stream to extracting file.
17                }
18            }
19
20            using (var extracted = File.Create(dataDir + "asyoulik_extracted_store_out.txt"))
21            {
22                using (var decompressed = archive.Entries[1].Open())
23                {
24                    byte[] buffer = new byte[8192];
25                    int bytesRead;
26                    while (0 < (bytesRead = decompressed.Read(buffer, 0, buffer.Length)))
27                    {
28                        extracted.Write(buffer, 0, bytesRead);
29                    }
30                    // Read from decompressed stream to extracting file.
31                }
32            }
33        }
34    }

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.