ภาพรวม

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

วิธีการเข้ารหัสหรือถอดรหัสไฟล์ 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 ใน Archive Constructor ซึ่งเปิดใช้งานการเข้ารหัสแบบเลือกสรรของแต่ละรายการ ทำให้รายการอื่นๆ ไม่มีการเข้ารหัส

เข้ารหัสรายการที่สองของทั้งสามรายการใน 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 ต่างๆ อาจแตกต่างกันไป

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

ผู้ใช้มีตัวเลือกในการถอดรหัสรายการเฉพาะภายในไฟล์ 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

เข้ารหัสและบีบอัดด้วยไฟล์เก็บถาวร 7z ทั้งหมดของ LZMA2

ไฟล์เก็บถาวร 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# เพื่อแปลง รวม แก้ไขเอกสารไฟล์ zip แยกข้อมูลจากไฟล์เก็บถาวร และอื่นๆ อีกมากมาย!

  

Support and Learning Resources

  
  

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