概要

Aspose.ZIP は、アーカイブのさまざまな暗号化および復号化操作を容易にします。 Aspose.Zip API for Python.NET を使用すると、ZIP、RAR、および 7-Zip アーカイブを効率的に暗号化および復号化できます。

ZIPファイルを暗号化する

ZIP アーカイブには 2 つの暗号化技術を利用できます。1 つは古い、現在では安全性が低いと考えられている従来の方法で、もう 1 つはより堅牢な最新の 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 アーカイブ ツールとの互換性が異なる可能性があることに注意することが重要です。

ZIP を暗号化する 3 つのエントリのうちの 2 番目のエントリ

    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 の 3 つのファイルが追加されます。
仕組みは次のとおりです:
this.resultFile に保存されている名前に基づいて、ZIP アーカイブのファイルを開くか作成します。追加するファイルを表す FileInfo オブジェクトを作成します。新しいアーカイブ オブジェクトを作成します。
ファイルの追加: alice29.txt と field.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」を使用してアーカイブの 2 番目のレコードを復号し、その内容を 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 の 3 つのファイルを含む暗号化された 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 の 3 つのファイルを含む暗号化された 7z アーカイブを作成します。最初のファイルは特別な設定を行わずにアーカイブに追加されます。 2 番目のファイルは、LZMA2 圧縮と AES 暗号化を使用し、パスワード「p@s$S」で添付されます。 3 番目のファイルは、LZMA2 圧縮と AES 暗号化を使用し、パスワード「$ecret」で添付されます。最後に、アーカイブは 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")

ファイル名が暗号化されているかどうかに関係なく、抽出コンストラクター内でパスワードを指定しても安全です。以下のサンプルは、コンテンツのみが保護されている場合にのみ機能します。

サポートされているその他の Aspose.ZIP for Python.Net API 機能

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: