ภาพรวม
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 มีฟังก์ชันการทำงานที่ครอบคลุมเพื่อปรับปรุงขั้นตอนการทำงานของคุณและปรับปรุงประสิทธิภาพการทำงาน
Support and Learning Resources
- ทรัพยากรการเรียนรู้
- เอกสารประกอบ
- รหัสแหล่งที่มา
- การอ้างอิง API
- การสนับสนุนผลิตภัณฑ์
- การสนับสนุนฟรี
- การสนับสนุนแบบชำระเงิน
- บล็อก
- บันทึกประจำรุ่น
- ทำไมต้อง Aspose.Zip สำหรับ Python.Net
- รายชื่อลูกค้า
- เรื่องราวความสำเร็จ