571
Chương 14: Mật mã
using System.Text;
using System.Security.Cryptography;
public class AsymmetricEncryptionExample {
public static void Main(string[] args) {
// Khai báo một biến RSAParameters, biến này sẽ chứa
// thông tin PUBLIC KEY của người nhận.
RSAParameters recipientsPublicKey;
// Khai báo một biến CspParameters, biến này sẽ cho biết
// PRIVATE KEY được lưu trữ trong kho chứa khóa nào.
// Thông thường, chỉ có người nhận mới có thể truy xuất
// thông tin này. Với mục đích minh họa, chúng ta sẽ tạo
// một cặp khóa ngay đầu ví dụ và sử dụng các khóa này
// cho cả bên gửi và bên nhận.
CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = "MyKeys";
// Tạo cặp khóa bất đối xứng bằng lớp RSACryptoServiceProvider.
// Lưu các khóa này vào một kho chứa khóa có tên là "MyKeys"
// và trích thông tin PUBLIC KEY vào biến recipientsPublicKey.
using (RSACryptoServiceProvider rsaAlg =
new RSACryptoServiceProvider(cspParams)) {
// Cấu hình cho giải thuật lưu khóa vào kho chứa khóa.
rsaAlg.PersistKeyInCsp = true;
// Trích PUBLIC KEY.
recipientsPublicKey = rsaAlg.ExportParameters(false);
}
// Hiển thị thông điệp plaintext gốc.
Console.WriteLine("Original message = {0}", args[0]);
// Chuyển thông điệp gốc thành mảng byte. Tốt nhất là không
// truyền các thông tin bí mật ở dạng chuỗi giữa các phương thức.