ภาพรวม

Aspose.ZIP อำนวยความสะดวกในการดำเนินการเข้ารหัสและถอดรหัสที่หลากหลายสำหรับไฟล์เก็บถาวร การใช้ Aspose.Zip API สำหรับ Python.NET ทำให้คุณสามารถเข้ารหัสและถอดรหัสไฟล์เก็บถาวร ZIP, RAR และ 7-Zip ได้อย่างมีประสิทธิภาพ

เข้ารหัสไฟล์ ZIP

สามารถใช้เทคนิคการเข้ารหัสสองแบบสำหรับไฟล์ ZIP: แบบเก่าซึ่งปัจจุบันถือว่ามีความปลอดภัยน้อยกว่า และการเข้ารหัส AES สมัยใหม่ที่แข็งแกร่งกว่า มาตรฐาน ZIP อนุญาตให้มีการเข้ารหัสแต่ละรายการภายในไฟล์เก็บถาวรเดียวกันโดยใช้วิธีใดวิธีหนึ่ง การเข้ารหัส AES ซึ่งเป็นที่รู้จักในเรื่องการรักษาความปลอดภัยที่แข็งแกร่งกว่า รองรับคีย์ความยาวต่างๆ รวมถึง 128 บิต 192 บิต และ 256 บิต ให้การป้องกันที่ได้รับการปรับปรุงสำหรับข้อมูลที่ละเอียดอ่อนภายในไฟล์ ZIP แต่ละรายการในไฟล์เก็บถาวรเดียวกันอาจถูกเข้ารหัสด้วยการเข้ารหัสของตัวเอง ดังนั้นคุณจึงสามารถผสมประเภทการเข้ารหัสที่แตกต่างกันในไฟล์เก็บถาวรเดียวกันได้

ปลดล็อค ZIP ด้วยวิธี Deflate

    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)

โค้ดจะสร้างไฟล์ ZIP ใหม่ชื่อ archive.zip บีบอัดเนื้อหาของ alice29.txt โดยใช้วิธีการบีบอัดแบบ Deflate เข้ารหัสด้วยวิธีการเข้ารหัส ZIP แบบเดิมโดยใช้รหัสผ่าน "p@s$S" และบันทึกการบีบอัดและเข้ารหัส ไปยังไฟล์ ZIP ที่สร้างขึ้นใหม่

เข้ารหัส ZIP ด้วย AES

    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)

รหัสที่ให้มาสาธิตวิธีสร้างไฟล์ ZIP ชื่อ archive.zip บีบอัดไฟล์ alice29.txt โดยใช้วิธีบีบอัดแบบ Deflate และเข้ารหัสด้วยการเข้ารหัส AES-256 โดยใช้รหัสผ่าน "p@s$S" สำหรับตัวอย่างเหล่านี้ เราได้จัดเตรียมอินสแตนซ์ของ EncryptionSetting ภายใน Archive Constructor ที่เกี่ยวข้อง คุณสามารถใช้การเข้ารหัสสำหรับรายการใดรายการหนึ่งโดยปล่อยให้รายการอื่นๆ ไม่ได้รับการป้องกัน
สิ่งนี้แสดงให้เห็นถึงความยืดหยุ่นในการใช้การเข้ารหัสกับรายการเฉพาะภายในไฟล์ ZIP ทำให้ไฟล์ต่างๆ มีระดับการป้องกันที่แตกต่างกัน แนวทางนี้ช่วยให้มีกลยุทธ์การรักษาความปลอดภัยที่ละเอียดและปรับแต่งได้มากขึ้น โดยที่แต่ละไฟล์หรือกลุ่มของไฟล์สามารถมีระดับการป้องกันที่แตกต่างกันได้ อย่างไรก็ตาม สิ่งสำคัญที่ควรทราบคือแนวทางปฏิบัตินี้อาจทำให้กระบวนการจัดการและถอดรหัสมีความซับซ้อน และความเข้ากันได้กับเครื่องมือเก็บถาวร ZIP ต่างๆ อาจแตกต่างกันไป

เข้ารหัส 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)

รหัสนี้สาธิตการสร้างไฟล์ ZIP ที่ป้องกันด้วยรหัสผ่านใน Python โดยจะเพิ่มไฟล์สามไฟล์: alice29.txt, asyoulik.txt และ fields.c
วิธีการทำงานมีดังนี้:
เปิดหรือสร้างไฟล์สำหรับไฟล์ ZIP ตามชื่อที่เก็บไว้ใน this.resultFile สร้างวัตถุ 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)

ข้อมูลโค้ดนี้สาธิตการสร้างไฟล์ ZIP ใน Python โดยที่แต่ละไฟล์ได้รับการเข้ารหัสด้วยวิธีและรหัสผ่านที่แตกต่างกัน วิธีการทำงาน:
การตั้งค่าไฟล์: เปิดหรือสร้างไฟล์สำหรับไฟล์ ZIP ตามชื่อที่จัดเก็บไว้ใน this.resultFile สร้างออบเจ็กต์ FileInfo ที่แสดงถึงไฟล์ที่จะเพิ่ม: alice29.txt, asyoulik.txt และ fields.c
การสร้างไฟล์เก็บถาวร: สร้างออบเจ็กต์ไฟล์เก็บถาวรใหม่ (ไฟล์เก็บถาวร)
การเพิ่มไฟล์ที่เข้ารหัส: โค้ดใช้การวนซ้ำเพื่อวนซ้ำไฟล์และเพิ่มลงในไฟล์เก็บถาวรด้วยการตั้งค่าการเข้ารหัสเฉพาะ:
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" เพื่อถอดรหัส และแยกเนื้อหาทั้งหมดไปยังโฟลเดอร์ "destination" ที่กำหนด

ถอดรหัสไฟล์ RAR

Aspose.ZIP ไม่รองรับองค์ประกอบไฟล์เก็บถาวร RAR รองรับเฉพาะการแตกไฟล์เท่านั้น ไฟล์เก็บถาวร RAR สามารถเข้ารหัสโดยมีหรือไม่มีการป้องกันชื่อไฟล์ก็ได้
ในกรณีเดิม ผู้ใช้จำเป็นต้องระบุรหัสผ่านสำหรับการถอดรหัสภายใน RarArchiveLoadOptions ในช่วงเริ่มต้นของการสร้างอินสแตนซ์ไฟล์เก็บถาวร RAR ในกรณีหลังนี้ เป็นไปได้ที่จะส่งรหัสผ่านในภายหลังเมื่อทำการแยกรายการ

ถอดรหัสไฟล์ 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")

รหัสนี้จะเปิดไฟล์เก็บถาวร RAR source.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 การใช้บัฟเฟอร์การอ่านช่วยให้มั่นใจได้ว่ามีการถ่ายโอนข้อมูลแบบค่อยเป็นค่อยไป ซึ่งช่วยจัดการไฟล์ขนาดใหญ่ได้อย่างมีประสิทธิภาพ ตัวอย่างนี้จะใช้งานได้หากมีการเข้ารหัสเฉพาะเนื้อหาของรายการแต่ไม่ได้เข้ารหัสชื่อไฟล์ ในไบต์รายการตัวอย่างนี้จะถูกคัดลอกไปยังกระแสข้อมูลหน่วยความจำ

การเข้ารหัส 7zip ด้วย aes 256

ตัวเลือกเดียวของการเข้ารหัสไฟล์เก็บถาวร 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)

รหัสนี้สร้างไฟล์เก็บถาวร 7z ที่เข้ารหัสซึ่งมีสามไฟล์: alice29.txt, asyoulik.txt และ fields.c ไฟล์เก็บถาวรใช้การบีบอัด LZMA2 และการเข้ารหัส AES ด้วยรหัสผ่าน "p@s$S" ไฟล์จะถูกเพิ่มลงในไฟล์เก็บถาวรโดยใช้วิธี 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)

รหัสนี้สร้างไฟล์เก็บถาวร 7z ที่เข้ารหัสซึ่งมีสามไฟล์: alice29.txt, asyoulik.txt และ fields.c ไฟล์แรกจะถูกเพิ่มลงในไฟล์เก็บถาวรโดยไม่มีการตั้งค่าพิเศษ ไฟล์ที่สองแนบมาโดยใช้การบีบอัด LZMA2 และการเข้ารหัส AES ด้วยรหัสผ่าน "p@s$S" ไฟล์ที่สามแนบมาโดยใช้การบีบอัด LZMA2 และการเข้ารหัส AES ด้วยรหัสผ่าน "$ecret" สุดท้าย ไฟล์เก็บถาวรจะถูกบันทึกลงในไฟล์ archive.7z
เช่นเดียวกับ ZIP ผู้ใช้สามารถถอดรหัสทั้งไฟล์เก็บถาวรหรือรายการเฉพาะจากไฟล์นั้นได้ ไฟล์เก็บถาวร 7Z สามารถเข้ารหัสโดยมีหรือไม่มีการป้องกันชื่อไฟล์ก็ได้ หากชื่อไฟล์ถูกเข้ารหัส คุณจะต้องระบุรหัสผ่านใน archive Instantiation

ถอดรหัสไฟล์ 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 อื่นๆ ที่รองรับสำหรับคุณสมบัติ Python.Net API

ด้วยไลบรารี Aspose.ZIP ใน Python.Net คุณสามารถจัดการงานต่างๆ ที่เกี่ยวข้องกับเอกสารไฟล์ ZIP ได้อย่างราบรื่น ไม่ว่าคุณจะต้องการแปลงรูปแบบ รวมไฟล์ แก้ไขเนื้อหา หรือแยกข้อมูล Aspose.ZIP มีฟังก์ชันการทำงานที่ครอบคลุมเพื่อปรับปรุงขั้นตอนการทำงานของคุณและปรับปรุงประสิทธิภาพการทำงาน

  
  

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