Ulasan
Keamanan data adalah hal terpenting dalam lanskap digital saat ini, dan salah satu cara efektif untuk melindungi informasi sensitif adalah melalui enkripsi. Ikhtisar ini akan memandu Anda tentang cara mengenkripsi atau mendekripsi seluruh arsip atau entri tertentu di dalamnya, memastikan kerahasiaan dan integritas data Anda. Aspose.ZIP memfasilitasi berbagai operasi yang berkaitan dengan enkripsi dan dekripsi arsip.Cara Mengenkripsi atau Mendekripsi seluruh Arsip ZIP
Enkripsi arsip Zip dengan metode tradisional
Ada dua metode enkripsi yang tersedia untuk arsip ZIP: tradisional, yang saat ini dianggap lemah, dan AES modern. Standar ZIP memungkinkan entri apa pun dienkripsi dengan salah satu metode ini bahkan dalam arsip yang sama. Enkripsi AES menawarkan keamanan yang lebih kuat dan tersedia dalam panjang kunci yang berbeda (128-bit, 192-bit, dan 256-bit). Ini memberikan perlindungan yang lebih baik untuk data sensitif dalam arsip ZIP.
File dikompres dengan 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);
}
}
Mengenkripsi seluruh arsip dengan metode 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);
}
}
}
Contoh ini menunjukkan cara menyematkan instance EncryptionSetting di Konstruktor Arsip . Hal ini memungkinkan enkripsi selektif pada setiap entri, menjaga entri lainnya tidak terenkripsi.
Enkripsi entri kedua dari ketiganya di Arsip 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);
archive.CreateEntry("asyoulik.txt", source2, false, new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)));
archive.CreateEntry("fields.c", source3);
archive.Save(zipFile);
}
}
Meskipun mungkin tampak tidak lazim, mengenkripsi entri tertentu dalam arsip ZIP memang layak dilakukan menggunakan metode enkripsi dan kata sandi yang berbeda. Pendekatan ini memungkinkan strategi keamanan yang lebih terperinci dan disesuaikan, di mana file individual atau kelompok file dapat memiliki tingkat perlindungan yang berbeda. Namun, penting untuk dicatat bahwa praktik ini dapat mempersulit proses pengelolaan dan dekripsi, dan kompatibilitas dengan berbagai alat arsip ZIP dapat bervariasi.
Enkripsi Zip dengan metode dan kata sandi yang berbeda
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 memungkinkan Anda menambahkan enkripsi ke arsip yang ada tanpa mengemas ulang konten sepenuhnya. Namun, penting untuk dicatat bahwa semua entri arsip harus tidak dilindungi; jika tidak, pengecualian akan dimunculkan.
Enkripsi arsip ZIP yang ada
using (var archive = new Archive("plain.zip"))
{
archive.Save("encrypted.zip", new ArchiveSaveOptions()
{
EncryptionOptions = new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)
});
}
Mendekripsi arsip Zip
Pengguna memiliki opsi untuk mendekripsi entri tertentu dalam arsip ZIP terenkripsi atau seluruh arsip secara keseluruhan.
Dekripsi entri tertentu
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);
}
}
Dekripsi seluruh arsip Zip
Dalam hal ini kita perlu memberikan kata sandi dalam konstruktor.
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);
}
}
}
Cara Mengenkripsi atau Mendekripsi Arsip RAR
Mendekripsi arsip RAR
Aspose.ZIP tidak mendukung komposisi arsip RAR, hanya mendukung ekstraksi.
Arsip RAR
dapat dienkripsi dengan atau tanpa melindungi nama file.
Dalam kasus sebelumnya, pengguna perlu memberikan kata sandi dekripsi dalam
RarArchiveLoadOptions
di awal pembuatan arsip RAR. Dalam kasus terakhir, dimungkinkan untuk memasukkan kata sandi nanti pada ekstraksi entri.
Dekripsi seluruh arsip RAR dengan nama file terenkripsi
using (RarArchive archive = new RarArchive("source.rar",
new RarArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
archive.ExtractToDirectory("destination");
}
Dekripsi entri tertentu dari arsip RAR
Contoh ini akan berfungsi jika hanya konten entri yang dienkripsi tetapi nama file tidak.
using (RarArchive archive = new RarArchive("source.rar"))
{
archive.Entries[0].Extract("first_entry.bin", "p@s$");
}
Dekripsi entri tertentu dari arsip RAR sebagai aliran
Namun, dalam contoh ini , asumsinya adalah hanya konten entri yang dienkripsi, bukan nama file . Ini memerlukan penyalinan byte entri ke aliran memori.
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);
}
}
}
Cara Mengenkripsi atau Mendekripsi seluruh Arsip 7ZIP
Metode untuk Mengenkripsi File Arsip 7z
Satu-satunya pilihan enkripsi arsip 7z adalah AES .
Enkripsi dan kompres dengan seluruh arsip 7z LZMA2
Arsip 7Z mendukung kemampuan untuk mengenkripsi setiap entri dengan kata sandinya sendiri atau membiarkannya tidak terlindungi.
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);
}
}
Enkripsi entri arsip 7z dengan kata sandi sendiri dan biarkan satu entri tidak terenkripsi
Mirip dengan ZIP, pengguna dapat mendekripsi seluruh arsip atau entri tertentu darinya.
Arsip 7Z dapat dienkripsi dengan atau tanpa melindungi nama file. Jika nama file dienkripsi, Anda perlu memberikan kata sandi
pada pembuatan arsip
.
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);
}
}
Dekripsi seluruh arsip dengan nama file terenkripsi ke direktori
Apakah nama file dienkripsi atau tidak, aman untuk memberikan kata sandi dalam mengekstraksi konstruktor.
Contoh di bawah hanya akan berfungsi jika hanya konten yang dilindungi.
using (SevenZipArchive archive = new SevenZipArchive("archive.7z", "p@s$"))
{
archive.ExtractToDirectory("C:\\extracted");
}
Dekripsi entri tertentu
using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
{
archive.Entries[0].Extract("data.bin", "p@s$");
}
Aspose.ZIP Lainnya yang Didukung untuk Fitur .NET API
Gunakan pustaka Aspose.ZIP C# untuk mengonversi, menggabungkan, mengedit dokumen file zip, mengekstrak data dari arsip, dan banyak lagi!
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