ภาพรวม
ความปลอดภัยของข้อมูลเป็นสิ่งสำคัญยิ่งในโลกดิจิทัลในปัจจุบัน และวิธีหนึ่งที่มีประสิทธิภาพในการปกป้องข้อมูลที่ละเอียดอ่อนก็คือผ่านการเข้ารหัส ภาพรวมนี้จะแนะนำคุณเกี่ยวกับวิธีเข้ารหัสหรือถอดรหัสไฟล์เก็บถาวรทั้งหมดหรือรายการเฉพาะภายในไฟล์ เพื่อให้มั่นใจถึงการรักษาความลับและความสมบูรณ์ของข้อมูลของคุณ 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
- Learning Resources
- Documentation
- Source Code
- API References
- Tutorial Videos
- Product Support
- Free Support
- Paid Support
- Blog
- Release Notes
- Why Aspose.ZIP for .NET?
- Customers List
- Success Stories