نظرة عامة

يعد أمن البيانات أمرًا بالغ الأهمية في المشهد الرقمي اليوم، وإحدى الطرق الفعالة لحماية المعلومات الحساسة هي من خلال التشفير. سترشدك هذه النظرة العامة حول كيفية تشفير أو فك تشفير أرشيف كامل أو إدخالات محددة بداخله، مما يضمن سرية بياناتك وسلامتها. يسهل Aspose.ZIP مجموعة من العمليات المتعلقة بتشفير وفك تشفير الأرشيفات.

كيفية تشفير أو فك تشفير أرشيف ZIP بالكامل

تشفير الأرشيف المضغوط بالطريقة التقليدية

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

الملفات مضغوطة ببرنامج Deflate

    using (var zipFile = File.Open("archive.zip", FileMode.Create))
    {
        using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
        {
            var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new TraditionalEncryptionSettings("p@s$")));
            archive.CreateEntry("alice29.txt", source);
            archive.Save(zipFile);
        }
    }

تشفير الأرشيف بأكمله بطريقة AES

    using (var zipFile = File.Open("archive.zip", FileMode.Create))
    {
        using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
        {
            using (var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
            {
                archive.CreateEntry("alice29.txt", source);
                archive.Save(zipFile);
            }
        }
    }

توضح هذه العينات كيفية تضمين مثيلات EncryptionSetting في منشئ الأرشيف المقابل . يتيح ذلك تشفيرًا انتقائيًا للإدخالات الفردية، مع إبقاء الإدخالات الأخرى غير مشفرة.

قم بتشفير الإدخال الثاني من الثلاثة في Zip Archive

    using (FileStream zipFile = File.Open(this.resultFile, FileMode.Create))
    {
        FileInfo source1 = new FileInfo("alice29.txt");
        FileInfo source2 = new FileInfo("asyoulik.txt");
        FileInfo source3 = new FileInfo("fields.c");

        using (var archive = new Archive())
        {
            archive.CreateEntry("alice29.txt", source1);
            archive.CreateEntry("asyoulik.txt", source2, false, new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)));
            archive.CreateEntry("fields.c", source3);
            archive.Save(zipFile);
        }
    }

على الرغم من أن الأمر قد يبدو غير تقليدي، إلا أنه من الممكن بالفعل تشفير إدخالات معينة داخل أرشيف ZIP باستخدام طرق تشفير وكلمات مرور مختلفة. يسمح هذا الأسلوب بإستراتيجية أمان أكثر تفصيلاً وتخصيصًا، حيث يمكن أن تتمتع الملفات الفردية أو مجموعات الملفات بمستويات مختلفة من الحماية. ومع ذلك، من المهم ملاحظة أن هذه الممارسة قد تؤدي إلى تعقيد عملية الإدارة وفك التشفير، وقد يختلف التوافق مع أدوات أرشيف ZIP المختلفة.

تشفير الرمز البريدي بطرق وكلمات مرور مختلفة

    using (FileStream zipFile = File.Open(this.resultFile, FileMode.Create))
    {
        FileInfo source1 = new FileInfo("alice29.txt");
        FileInfo source2 = new FileInfo("asyoulik.txt");
        FileInfo source3 = new FileInfo("fields.c");

        using (var archive = new Archive())
        {
            archive.CreateEntry("alice29.txt", source1, false, new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$1", EncryptionMethod.AES256)));
            archive.CreateEntry("asyoulik.txt", source2, false, new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$2")));
            archive.CreateEntry("fields.c", source3, false, new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$3", EncryptionMethod.AES256)));
            archive.Save(zipFile);
        }
    }

يتيح لك Aspose.ZIP إضافة تشفير إلى أرشيف موجود دون إعادة تعبئة المحتويات بالكامل. ومع ذلك، من المهم ملاحظة أن جميع إدخالات الأرشيف يجب أن تكون غير محمية؛ وإلا، سيتم رفع استثناء.

تشفير أرشيف ZIP الموجود

    using (var archive = new Archive("plain.zip"))
    {
        archive.Save("encrypted.zip", new ArchiveSaveOptions() 
        { 
            EncryptionOptions = new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)
        });
    }

فك تشفير أرشيف مضغوط

لدى المستخدم خيار فك تشفير إما إدخال محدد داخل أرشيف ZIP المشفر أو الأرشيف بأكمله ككل.

فك تشفير إدخال معين

    using (var zipFile = File.Open("archive.zip", FileMode.Create))
    {
        using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
        {
            var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new TraditionalEncryptionSettings("p@s$")));
            archive.CreateEntry("alice29.txt", source);
            archive.Save(zipFile);
        }
    }

فك تشفير أرشيف Zip بأكمله

في هذه الحالة نحن بحاجة إلى توفير كلمة المرور داخل المنشئ.

    using (var zipFile = File.Open("archive.zip", FileMode.Create))
    {
        using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
        {
            using (var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
            {
                archive.CreateEntry("alice29.txt", source);
                archive.Save(zipFile);
            }
        }
    }

كيفية تشفير أو فك تشفير أرشيف RAR

فك تشفير أرشيف RAR

لا يدعم Aspose.ZIP تكوين أرشيف RAR، ولكنه يدعم الاستخراج فقط. يمكن تشفير أرشيف RAR مع حماية أسماء الملفات أو بدونها.
في الحالة السابقة، يحتاج المستخدم إلى توفير كلمة مرور فك التشفير داخل RarArchiveLoadOptions في بداية إنشاء مثيل أرشيف RAR. وفي الحالة الأخيرة، من الممكن تمرير كلمة المرور لاحقًا عند استخراج الإدخال.

فك تشفير أرشيف RAR بالكامل بأسماء الملفات المشفرة

    using (RarArchive archive = new RarArchive("source.rar", 
    new RarArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
    {
        archive.ExtractToDirectory("destination");
    }

فك تشفير إدخال معين من أرشيف RAR

قد يعمل هذا النموذج إذا تم تشفير محتوى الإدخالات فقط ولكن أسماء الملفات ليست كذلك.

    using (RarArchive archive = new RarArchive("source.rar"))
    {
        archive.Entries[0].Extract("first_entry.bin", "p@s$");
    }

فك تشفير إدخال معين من أرشيف RAR كدفق

ومع ذلك، في هذه العينة ، الافتراض هو أنه يتم تشفير محتوى الإدخالات فقط، وليس أسماء الملفات . وهذا يتطلب نسخ بايت الإدخال إلى دفق الذاكرة.

    MemoryStream destination = new MemoryStream();
    using (RarArchive archive = new RarArchive("source.rar"))
    {
        using (var source = archive.Entries[1].Open("p@s$"))
        {
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0)
            {
                destination.Write(buffer, 0, bytesRead);
            }
        }
    }

كيفية تشفير أو فك تشفير أرشيف 7ZIP بالكامل

طرق تشفير ملفات أرشيف 7z

الخيار الوحيد لتشفير أرشيف 7z هو AES .

قم بالتشفير والضغط باستخدام أرشيف LZMA2 بالكامل 7z

تدعم أرشيفات 7Z القدرة على تشفير كل إدخال بكلمة مرور خاصة به أو تركه بدون حماية.

    using (FileStream szFile = File.Open("archive.7z", FileMode.Create))
    {
        FileInfo source1 = new FileInfo("alice29.txt");
        FileInfo source2 = new FileInfo("asyoulik.txt");	
        FileInfo source3 = new FileInfo("fields.c");

        using (var archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("p@s$"))))
        {
            archive.CreateEntry("alice29.txt", source1);
            archive.CreateEntry("asyoulik.txt", source2);
            archive.CreateEntry("fields.c", source3);
            archive.Save(szFile);
        }
    }

تشفير إدخالات أرشيف 7z باستخدام كلمات المرور الخاصة وترك إدخال واحد غير مشفر

كما هو الحال مع ZIP، يمكن للمستخدم فك تشفير الأرشيف بالكامل أو إدخال معين منه.
يمكن تشفير أرشيف 7Z مع أو بدون حماية أسماء الملفات. إذا كانت أسماء الملفات مشفرة، فستحتاج إلى توفير كلمة المرور عند إنشاء مثيل للأرشيف .

    using (FileStream szFile = File.Open("archive.7z", FileMode.Create))
    {
        FileInfo source1 = new FileInfo("alice29.txt");
        FileInfo source2 = new FileInfo("asyoulik.txt");
        FileInfo source3 = new FileInfo("fields.c");

        using (var archive = new SevenZipArchive())
        {
            archive.CreateEntry("alice29.txt", source1);
            archive.CreateEntry("asyoulik.txt", source2, false, new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("p@s$")));
            archive.CreateEntry("fields.c", source3, false, new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("$ecret")));
            archive.Save(szFile);
        }
    }

فك تشفير الأرشيف بأكمله بأسماء الملفات المشفرة إلى الدليل

سواء كانت أسماء الملفات مشفرة أم لا، فمن الآمن توفير كلمة المرور داخل عملية استخراج المنشئ.
لن يعمل النموذج أدناه إلا عندما يكون المحتوى محميًا فقط.

    using (SevenZipArchive archive = new SevenZipArchive("archive.7z", "p@s$")) 
    { 
        archive.ExtractToDirectory("C:\\extracted");
    }

فك تشفير إدخال معين

    using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
    {
        archive.Entries[0].Extract("data.bin", "p@s$");
    }

ميزات Aspose.ZIP الأخرى المدعومة لـ .NET API

استخدم مكتبة Aspose.ZIP C# لتحويل مستندات الملفات المضغوطة ودمجها وتحريرها واستخراج البيانات من الأرشيفات والمزيد!

  

Support and Learning Resources

  
  

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