개요

Aspose.ZIP은 아카이브에 대한 다양한 암호화 및 암호 해독 작업을 용이하게 합니다. Python.NET용 Aspose.Zip API를 사용하면 ZIP, RAR 및 7-Zip 아카이브를 효율적으로 암호화하고 해독할 수 있습니다.

ZIP 파일 암호화

ZIP 아카이브에는 두 가지 암호화 기술, 즉 덜 안전하다고 여겨지는 기존 방식과 보다 강력한 최신 AES 암호화를 활용할 수 있습니다. ZIP 표준은 두 방법 중 하나를 사용하여 동일한 아카이브 내의 개별 항목을 암호화하는 것을 허용합니다. 더 강력한 보안으로 알려진 AES 암호화는 128비트, 192비트, 256비트를 포함한 다양한 키 길이를 지원하여 ZIP 아카이브 내의 민감한 데이터에 대한 향상된 보호 기능을 제공합니다. 동일한 아카이브의 각 항목은 자체 암호화로 암호화될 수 있으므로 동일한 아카이브에서 다양한 암호화 유형을 혼합할 수 있습니다.

Deflate 방법으로 ZIP 잠금 해제

    with open("archive.zip", 'x') as zip_file:
        with open("alice29.txt") as source:
            method =  zp.saving.CompressionSettings.deflate
            encryption = zp.saving.TraditionalEncryptionSettings("p@s$S")
            archive = zp.Archive(zp.saving.ArchiveEntrySettings(method, encryption))
            archive.create_entry("alice29.txt", source)
            archive.save(zip_file)

이 코드는 archive.zip이라는 새 ZIP 파일을 생성하고, Deflate 압축 방법을 사용하여 alice29.txt의 내용을 압축하고, 비밀번호 "p@s$S"를 사용하여 기존 ZIP 암호화 방법으로 암호화한 후 압축 및 암호화된 파일을 저장합니다. 새로 생성된 ZIP 아카이브에 파일을 추가하세요.

AES로 ZIP 암호화

    with open("archive.zip", 'x') as zip_file:
        with open("alice29.txt") as source:
            method =  zp.saving.CompressionSettings.deflate
            encryption = zp.saving.AesEcryptionSettings("p@s$S", zp.saving.EncryptionMethod.AES256)
            archive = zp.Archive(zp.saving.ArchiveEntrySettings(method, encryption))
            archive.create_entry("alice29.txt", source)
            archive.save(zip_file)

제공된 코드는 archive.zip이라는 ZIP 아카이브를 생성하고, Deflate 압축 방법을 사용하여 alice29.txt 파일을 압축하고, 비밀번호 "p@s$S"를 사용하여 AES-256 암호화로 암호화하는 방법을 보여줍니다. 이러한 샘플의 경우 해당 아카이브 생성자 내에 EncryptionSetting 인스턴스를 제공했습니다. 다른 항목은 보호되지 않은 상태로 두고 특정 항목에 대해 암호화를 적용할 수 있습니다.
이는 ZIP 아카이브 내의 특정 항목에 암호화를 적용하여 다양한 파일에 고유한 보호 수준을 적용할 수 있는 유연성을 보여줍니다. 이 접근 방식을 사용하면 개별 파일 또는 파일 그룹이 고유한 보호 수준을 가질 수 있는 보다 세부적이고 사용자 정의된 보안 전략이 가능합니다. 그러나 이 방법은 관리 및 암호 해독 프로세스를 복잡하게 만들 수 있으며 다양한 ZIP 아카이브 도구와의 호환성이 다를 수 있다는 점에 유의하는 것이 중요합니다.

3개 중 두 번째 항목을 ZIP으로 암호화합니다.

    with open("archive.zip", 'x') as zip_file:
        encrypted_entry = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$", zp.saving.EncryptionMethod.AES256))
        with zp.Archive as archive:
            archive.create_entry("alice29.txt", "alice29.txt")
            archive.create_entry("asyoulik.txt", "asyoulik.txt", false, encrypted_entry)
            archive.create_entry("fields.c", "fields.c")
            archive.save(zip_file)

이 코드는 Python에서 비밀번호로 보호된 ZIP 아카이브를 만드는 방법을 보여줍니다. alice29.txt, asyoulik.txt 및 fields.c의 세 가지 파일을 추가합니다.
작동 방법은 다음과 같습니다.
this.resultFile에 저장된 이름을 기반으로 ZIP 아카이브용 파일을 열거나 생성합니다. 추가할 파일을 나타내는 FileInfo 개체를 만듭니다. 새 아카이브 개체를 만듭니다.
파일 추가: alice29.txt 및 fields.c는 특별한 설정 없이 아카이브에 추가됩니다. asyoulik.txt에는 AES-256 암호화가 추가되어 암호 해독을 위해 p@s$ 비밀번호가 필요합니다. 완료된 아카이브를 지정된 파일에 저장합니다.

다양한 방법과 비밀번호로 ZIP을 암호화하세요

    with open("archive.zip", 'x') as zip_file:
        encrypted_1 = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$1", zp.saving.EncryptionMethod.AES256))
        encrypted_2 = zp.saving.ArchiveEntrySettings(None, zp.saving.TraditionalEncryptionSettings("p@s$2"))
        encrypted_3 = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$3", zp.saving.EncryptionMethod.AES128))
        with zp.Archive as archive:
            archive.create_entry("alice29.txt", "alice29.txt", false, encrypted_1)
            archive.create_entry ("asyoulik.txt", "asyoulik.txt", false, encrypted_2)
            archive.create_entry("fields.c", "fields.c", false, encrypted_3)
            archive.save(zip_file)

이 코드 조각은 개별 파일이 다양한 방법과 비밀번호로 암호화되는 Python에서 ZIP 아카이브를 만드는 방법을 보여줍니다. 작동 방식은 다음과 같습니다.
파일 설정: this.resultFile에 저장된 이름을 기반으로 ZIP 아카이브용 파일을 열거나 만듭니다. 추가할 파일(alice29.txt, asyoulik.txt 및 fields.c)을 나타내는 FileInfo 개체를 만듭니다.
아카이브 생성: 새 아카이브 개체(아카이브)를 생성합니다.
암호화된 파일 추가: 코드는 루프를 사용하여 파일을 반복하고 특정 암호화 설정으로 아카이브에 추가합니다.
alice29.txt - 이 파일은 로 추가됩니다. AES-256 암호화 및 해독을 위해 비밀번호 "p@s"이 필요합니다.
asyoulik.txt - 이 파일은 기존 암호화라는 다른 암호화 방법으로 추가됩니다. 또한 복호화를 위해 별도의 비밀번호인 "p@s"를 사용합니다.
fields.c - 이 파일은 다시 AES-128 암호화로 추가되지만 암호 해독을 위해 다른 비밀번호 "p@s$3"을 사용합니다.
아카이브 저장: 마지막으로 코드는 암호화된 파일이 포함된 완성된 아카이브를 지정된 파일에 저장합니다.

다양한 방법과 비밀번호로 ZIP 아카이브를 암호화하세요

    with zp.Archive("plain.zip") as archive:
        save_options = zp.saving.ArchiveSaveOptions()
        save_options.encryption_options = zp.saving.AesEcryptionSettings("p@s$", zp.saving.EncryptionMethod.AES256)
        archive.save("encrypted.zip",  save_options)

이 코드는 기존 ZIP 아카이브 plain.zip을 가져와 AES-256을 사용하여 비밀번호 *p@s$*로 내용을 암호화하고 암호화된 버전을 encrypted.zip이라는 새 아카이브로 저장합니다.

ZIP 파일 암호 해독

비밀번호로 ZIP 파일 해독

    with zp.Archive("source.zip") as archive:
        archive.entries[0].extract("first_entry.bin", "p@s$")

사용자는 암호화된 ZIP 아카이브 내의 특정 항목을 해독할 수 있습니다. 이 코드 조각은 비밀번호로 보호된 ZIP 아카이브의 첫 번째 항목을 해독하는 기본 접근 방식을 보여줍니다. 비밀번호가 정확하면 아카이브가 성공적으로 열립니다.

전체 ZIP 파일 암호 해독

    load_options = zp.ArchiveLoadOptions()
    load_options.decryption_password = "p@s$S"
    with zp.Archive("source.zip", load_options) as archive:
        archive.extract_to_directory("destination")

이 간단한 코드는 비밀번호로 보호된 ZIP 아카이브 "source.zip"을 취하고, 제공된 비밀번호 "p@s$S"를 사용하여 암호를 해독한 후 지정된 폴더 "대상"에 모든 콘텐츠를 추출합니다.

RAR 파일 암호 해독

Aspose.ZIP은 RAR 아카이브 구성을 지원하지 않으며 추출만 지원합니다. RAR 아카이브는 파일 이름을 보호하거나 보호하지 않고 암호화할 수 있습니다.
전자의 경우 사용자는 RAR 아카이브 인스턴스화 초기에 RarArchiveLoadOptions 내에 암호 해독 비밀번호를 제공해야 합니다. 후자의 경우 나중에 항목 추출 시 비밀번호를 전달할 수 있습니다.

암호화된 파일 이름으로 전체 RAR 아카이브를 해독합니다.

    load_options = zp.rar.RarArchiveLoadOptions()
    load_options.decryption_password = "p@s$S"
    with zp.rar.RarArchive("source.rar", load_options) as archive:
        archive.extract_to_directory("destination")

기본적으로 이 코드는 ZIP 예제와 유사하게 작동하지만 특히 RAR 아카이브에 대해 작동합니다. 비밀번호로 보호된 RAR 아카이브 "source.rar"를 사용하고, 제공된 비밀번호 "p@s$S"를 사용하여 암호를 해독한 후 지정된 폴더 "대상"에 모든 콘텐츠를 추출합니다.

RAR 아카이브의 특정 항목을 해독합니다.

    with zp.rar.RarArchive("source.rar") as archive:
        archive.entries[0].extract("first_entry.bin", "p@s$S")

이 코드는 source.rar RAR 아카이브를 열고 비밀번호 "p@s$S"를 사용하여 아카이브의 첫 번째 항목을 해독 및 추출한 후 이를 first_entry.bin 파일에 저장합니다. 이 샘플은 항목의 내용만 암호화되고 파일 이름은 암호화되지 않은 경우에 작동합니다.

RAR 아카이브의 특정 항목을 스트림으로 해독합니다.

    with io.FileIO("file.bin", "xb") as destination:
        with zp.rar.RarArchive("source.rar") as archive:
            with archive.entries[0].open("p@s$S") as source:
                destination.write(source.readall())

이 코드는 RAR 아카이브 source.rar을 열고, 비밀번호 "p@s$S"를 사용하여 아카이브의 두 번째 레코드를 해독하고 해당 내용을 ByteArrayOutputStream으로 읽습니다. 읽기 버퍼를 사용하면 코드가 점진적인 데이터 전송을 보장하여 대용량 파일을 효율적으로 처리하는 데 도움이 됩니다. 이 샘플은 항목의 내용만 암호화되고 파일 이름은 암호화되지 않은 경우에 작동합니다. 이 샘플 항목에서는 바이트가 메모리 스트림에 복사됩니다.

aes 256을 사용한 7zip 암호화

7z 아카이브 암호화의 유일한 옵션은 AES 입니다. 아카이브는 효율적인 파일 크기 감소를 위해 LZMA2 압축을 사용하고 보안 강화를 위해 비밀번호를 사용하는 AES 암호화를 사용합니다. 코드는 파일을 반복하고 CreateEntry 메서드를 사용하여 해당 파일을 아카이브에 추가합니다.

전체 7zip 아카이브 암호화 및 압축

    with open("archive.7z", 'xb') as sz_file:
        compression = zp.saving.SevenZipLZMA2CompressionSettings()
        encryption = zp.saving.SevenZipAESEncryptionSettings("p@s$S")
        entry_settings = zp.saving.SevenZipEntrySettings(compression, encryption) 
        with zp.sevenzip.SevenZipArchive(entry_settings) as archive:
            archive.create_entry("alice29.txt", "alice29.txt")
            archive.create_entry("asyoulik.txt", "asyoulik.txt")
            archive.create_entry("fields.c", "fields.c")
            archive.save(sz_file)

이 코드는 alice29.txt, asyoulik.txt 및 fields.c의 세 가지 파일을 포함하는 암호화된 7z 아카이브를 생성합니다. 아카이브는 비밀번호 "p@s$S"와 함께 LZMA2 압축 및 AES 암호화를 사용합니다. CreateEntry 메소드를 사용하여 아카이브에 파일을 추가하고, 생성된 archive.7z 파일에 아카이브 자체가 저장된다.

7z 비밀번호로 암호화

    with open("archive.7z", 'xb') as sz_file:
        compression = zp.saving.SevenZipLZMA2CompressionSettings()
        entry_pass1 = zp.saving.SevenZipEntrySettings(compression, zp.saving.SevenZipAESEncryptionSettings("p@s$S"))
        entry_pass2 = zp.saving.SevenZipEntrySettings(compression, zp.saving.SevenZipAESEncryptionSettings("$ecret"))
        with zp.sevenzip.SevenZipArchive(entry_settings) as archive:
            archive.create_entry("alice29.txt", "alice29.txt")
            archive.create_entry("asyoulik.txt", "asyoulik.txt", false, entry_pass1)
            archive.create_entry("fields.c", "fields.c", false, entry_pass2)
            archive.save(sz_file)

이 코드는 alice29.txt, asyoulik.txt 및 fields.c의 세 가지 파일을 포함하는 암호화된 7z 아카이브를 생성합니다. 첫 번째 파일은 특별한 설정 없이 아카이브에 추가됩니다. 두 번째 파일은 비밀번호 "p@s$S"와 함께 LZMA2 압축 및 AES 암호화를 사용하여 첨부됩니다. 세 번째 파일은 비밀번호 "$ecret"과 함께 LZMA2 압축 및 AES 암호화를 사용하여 첨부됩니다. 마지막으로 아카이브가 archive.7z 파일에 저장됩니다.
ZIP과 마찬가지로 사용자는 전체 아카이브 또는 아카이브의 특정 항목을 해독할 수 있습니다. 7Z 아카이브는 파일 이름을 보호하거나 보호하지 않고 암호화할 수 있습니다. 파일 이름이 암호화된 경우 아카이브 인스턴스화 에서 비밀번호를 제공해야 합니다.

7ZIP 파일 암호 해독

암호화된 파일 이름으로 7z 아카이브를 해독합니다.

    with zp.sevenzip.SevenZipArchive("archive.7z", "p@s$S") as archive: 
        archive.extract_to_directory("c:\extracted")

파일 이름이 암호화되었는지 여부에 관계없이 추출 생성자 내에 비밀번호를 제공하는 것이 안전합니다. 아래 샘플은 콘텐츠만 보호되는 경우에만 작동합니다.

7zip 특정 항목의 암호 해독

with zp.sevenzip.SevenZipArchive("archive.7z") as archive:
    archive.entries[0].extract("data.bin", "p@s$S")

파일 이름이 암호화되었는지 여부에 관계없이 추출 생성자 내에 비밀번호를 제공하는 것이 안전합니다. 아래 샘플은 콘텐츠만 보호되는 경우에만 작동합니다.

Python.Net API 기능에 대해 지원되는 기타 Aspose.ZIP

Python.Net의 Aspose.ZIP 라이브러리를 사용하면 ZIP 파일 문서와 관련된 다양한 작업을 원활하게 처리할 수 있습니다. 형식 변환, 파일 병합, 콘텐츠 편집 또는 데이터 추출이 필요한 경우 Aspose.ZIP은 작업 흐름을 간소화하고 생산성을 향상시키는 포괄적인 기능을 제공합니다.

  

Support and Learning Resources

  
  

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