Rumah > Artikel > pembangunan bahagian belakang > Isu penyulitan fail dan algoritma penyahsulitan biasa dalam C#
Isu algoritma penyulitan dan penyahsulitan fail biasa dalam C# memerlukan contoh kod khusus
Dalam aplikasi komputer moden, perlindungan data dan keselamatan kelihatan amat penting. Algoritma penyulitan dan penyahsulitan fail ialah langkah perlindungan keselamatan data yang biasa digunakan untuk memastikan fail tidak diakses dan diubah suai oleh kakitangan yang tidak dibenarkan semasa penghantaran dan penyimpanan. Artikel ini akan meneroka isu penyulitan fail dan algoritma penyahsulitan biasa dalam C# dan memberikan contoh kod khusus yang sepadan.
Algoritma penyulitan simetri ialah algoritma yang menggunakan kunci yang sama untuk penyulitan dan penyahsulitan. Algoritma penyulitan simetri biasa dalam C# termasuk DES, AES dan RC4. Di sini kami mengambil algoritma DES sebagai contoh untuk menunjukkan pelaksanaan khusus penyulitan dan penyahsulitan fail.
Pertama, kita perlu mentakrifkan fungsi untuk menjana kunci rawak:
public static byte[] GenerateRandomKey() { byte[] key = new byte[8]; using (var rng = new RNGCryptoServiceProvider()) { rng.GetBytes(key); } return key; }
Seterusnya, kita boleh menggunakan kunci yang dijana untuk menyulitkan dan menyahsulit fail. Berikut ialah contoh menggunakan algoritma DES untuk penyulitan fail:
public static void EncryptFile(string inputFile, string outputFile, byte[] key) { using (var des = new DESCryptoServiceProvider()) { des.Key = key; des.Mode = CipherMode.ECB; using (var fsInput = new FileStream(inputFile, FileMode.Open, FileAccess.Read)) { using (var fsOutput = new FileStream(outputFile, FileMode.Create, FileAccess.Write)) { using (var cryptoStream = new CryptoStream(fsOutput, des.CreateEncryptor(), CryptoStreamMode.Write)) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fsInput.Read(buffer, 0, buffer.Length)) > 0) { cryptoStream.Write(buffer, 0, bytesRead); } } } } } }
Dalam kod contoh di atas, kami menggunakan kelas DESCryptoServiceProvider untuk mencipta contoh algoritma penyulitan DES. Kemudian, kami menggunakan kaedah CreateEncryptor untuk menjana penyulitan dan menulis data yang disulitkan ke fail output.
Proses menyahsulit fail adalah serupa dengan penyulitan, cuma tukar mencipta penyulitan kepada mencipta penyahsulit. Berikut ialah contoh penyahsulitan fail menggunakan algoritma DES: Algoritma untuk penyulitan dan penyahsulitan kunci, termasuk kunci awam dan peribadi. Algoritma penyulitan asimetri biasa dalam C# termasuk RSA dan DSA.
public static void DecryptFile(string inputFile, string outputFile, byte[] key) { using (var des = new DESCryptoServiceProvider()) { des.Key = key; des.Mode = CipherMode.ECB; using (var fsInput = new FileStream(inputFile, FileMode.Open, FileAccess.Read)) { using (var fsOutput = new FileStream(outputFile, FileMode.Create, FileAccess.Write)) { using (var cryptoStream = new CryptoStream(fsOutput, des.CreateDecryptor(), CryptoStreamMode.Write)) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fsInput.Read(buffer, 0, buffer.Length)) > 0) { cryptoStream.Write(buffer, 0, bytesRead); } } } } } }
public static void GenerateKeyPair(out string publicKey, out string privateKey) { using (var rsa = new RSACryptoServiceProvider()) { publicKey = rsa.ToXmlString(false); privateKey = rsa.ToXmlString(true); } }
Dalam kod contoh di atas, kami mencipta contoh RSACryptoServiceProvider berdasarkan kunci awam, dan menggunakan atribut Encryptor untuk mendapatkan penyulitan dan tulis data yang disulitkan ke dalam fail output.
Proses menyahsulit fail adalah serupa dengan penyulitan, cuma tukar mencipta penyulitan kepada mencipta penyahsulit. Berikut ialah contoh penggunaan algoritma RSA untuk penyahsulitan fail:
public static void EncryptFile(string inputFile, string outputFile, string publicKey) { using (var rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(publicKey); using (var fsInput = new FileStream(inputFile, FileMode.Open, FileAccess.Read)) { using (var fsOutput = new FileStream(outputFile, FileMode.Create, FileAccess.Write)) { using (var cryptoStream = new CryptoStream(fsOutput, rsa.Encryptor, CryptoStreamMode.Write)) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fsInput.Read(buffer, 0, buffer.Length)) > 0) { cryptoStream.Write(buffer, 0, bytesRead); } } } } } }
Ringkasan:
Algoritma penyulitan dan penyahsulitan fail adalah cara penting untuk melindungi keselamatan data. Artikel ini memperkenalkan algoritma penyulitan simetri dan asimetri biasa dalam C# dan menyediakan contoh kod yang sepadan. Dengan memahami dan menggunakan algoritma penyulitan ini, kami boleh melindungi kerahsiaan dan integriti fail dan memastikan keselamatan data semasa penghantaran dan penyimpanan.
Atas ialah kandungan terperinci Isu penyulitan fail dan algoritma penyahsulitan biasa dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!