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

573

Chương 14: Mật mã

// Khai báo mảng byte chứa ciphertext.

byte[] ciphertext = null;

// Tạo một thể hiện của giải thuật RSA.

using (RSACryptoServiceProvider rsaAlg =

new RSACryptoServiceProvider()) {

rsaAlg.ImportParameters(rsaParams);

// Mật hóa plaintext bằng OAEP padding

// (chỉ được hỗ trợ trên Windows XP trở về sau).

ciphertext = rsaAlg.Encrypt(plaintext, true);

}

// Xóa các giá trị được giữ trong mảng byte chứa plaintext.

// Điều này bảo đảm dữ liệu bí mật không còn trong bộ nhớ

// sau khi bạn giải phóng tham chiếu đến nó.

Array.Clear(plaintext, 0, plaintext.Length);

return ciphertext;

}

// Phương thức dùng để giải mật hóa một thông điệp (đã-được-mật-hóa-

// theo-RSA) bằng PRIVATE KEY (do đối tượng CspParameters chỉ định).

private static byte[] DecryptMessage(byte[] ciphertext,

CspParameters cspParams ) {

// Khai báo mảng byte chứa plaintext (đã-được-giải-mật-hóa).

byte[] plaintext = null;

// Tạo một thể hiện của giải thuật RSA.

using (RSACryptoServiceProvider rsaAlg =

new RSACryptoServiceProvider(cspParams)) {

// Giải mật hóa plaintext bằng OAEP padding.

plaintext = rsaAlg.Decrypt(ciphertext, true);

}