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

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.