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);
}