ملخص

يسهل Aspose.ZIP مجموعة من عمليات التشفير وفك التشفير للأرشيفات. باستخدام Aspose.Zip API لـ Python.NET، يمكنك تشفير وفك تشفير أرشيفات ZIP وRAR و7-Zip بكفاءة.

تشفير ملفات ZIP

يمكن استخدام تقنيتين للتشفير لأرشيفات ZIP: الطريقة التقليدية الأقدم والتي تعتبر الآن أقل أمانًا، وتشفير AES الحديث الأكثر قوة. يسمح معيار ZIP بتشفير الإدخالات الفردية داخل نفس الأرشيف باستخدام أي من الطريقتين. يدعم تشفير AES، المعروف بأمانه الأقوى، أطوال مفاتيح مختلفة، بما في ذلك 128 بت و192 بت و256 بت، مما يوفر حماية معززة للبيانات الحساسة داخل أرشيفات ZIP. قد يتم تشفير كل إدخال في نفس الأرشيف باستخدام تشفير خاص، بحيث يمكنك مزج أنواع تشفير مختلفة في نفس الأرشيف.

فتح ملف 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)

يقوم الكود بإنشاء ملف 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 داخل منشئ الأرشيف . المقابل من الممكن تطبيق التشفير لإدخال معين مع ترك الآخرين دون حماية.
يوضح هذا مرونة تطبيق التشفير على إدخالات محددة داخل أرشيف 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

فك تشفير ملف مضغوط بكلمة مرور

    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 مع أو بدون حماية أسماء الملفات.
في الحالة السابقة، يحتاج المستخدم إلى توفير كلمة مرور فك التشفير داخل 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")

يفتح هذا الرمز أرشيف 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.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 مع أو بدون حماية أسماء الملفات. إذا كانت أسماء الملفات مشفرة، فستحتاج إلى توفير كلمة مرور على إنشاء الأرشيف .

فك تشفير ملفات 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، يمكنك التعامل بسهولة مع المهام المتنوعة المتعلقة بمستندات الملفات المضغوطة. سواء كنت بحاجة إلى تحويل التنسيقات أو دمج الملفات أو تحرير المحتويات أو استخراج البيانات، فإن Aspose.ZIP يوفر وظائف شاملة لتبسيط سير عملك وتحسين الإنتاجية.

  
  

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