CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 563

563

Chương 14: Mật mã

public class SymmetricEncryptionExample {

public static void Main(string[] args) {

// Tạo một giải thuật Triple DES mới để thu lấy khóa dùng cho

// ví dụ này. Khóa này sẽ được dùng chung trong các phương thức

// EncryptFile và DecryptFile. Bình thường, khóa được

// thỏa thuận giữa người gửi và người nhận, hoặc được gửi

// (bởi người gửi) cùng với file đã-được-mật-hóa.

byte[] key;

byte[] iv;

using(SymmetricAlgorithm alg =

SymmetricAlgorithm.Create("3DES")){

key = alg.Key;

iv = alg.IV;

}

// Mật hóa file. Tiền tố "encrypted" sẽ được thêm vào tên file

// nguồn và được sử dụng làm tên của file đã-được-mật-hóa.

EncryptFile(args[0], "encrypted"+args[0], (byte[])key.Clone(),

(byte[])iv.Clone());

// Giải mật hóa file đã-được-mật-hóa. Tiền tố "decrypted" sẽ được

// thêm vào tên file gốc và được sử dụng làm tên của file

// đã-được-giải-mật-hóa.

DecryptFile("encrypted"+args[0], "decrypted"+args[0], key, iv);

}

// Phương thức dùng để mật hóa một file (bằng giải thuật Triple DES)

// với key và iv cho trước.

private static void EncryptFile(string srcFileName,

string destFileName, byte[] key, byte[] iv) {

// Tạo các stream để truy xuất file nguồn và file đích.

Stream srcFile =

new FileStream(srcFileName, FileMode.Open, FileAccess.Read);