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

580
Chương 14: Mật mã

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

}

// Tạo giải thuật đối xứng Triple-DES và sử dụng

// khóa được sinh tự động làm khóa phiên.

using (SymmetricAlgorithm symAlg =

SymmetricAlgorithm.Create("3DES")) {

// Hiển thị khóa phiên gốc.

Console.WriteLine("Session Key at Source = {0}\n\r",

BitConverter.ToString(symAlg.Key));

// Chuẩn bị khóa phiên đối xứng dùng cho trao đổi

// (sử dụng phương thức FormatKeyExchange, phương thức

// này cần khóa dùng để mật hóa và PUBLIC KEY

// của người nhận).

byte[] exchangeData =

FormatKeyExchange(symAlg.Key, recipientsPublicKey);

// Hiển thị khóa phiên đã-được-mật-hóa (do phương thức

// FormatKeyExchange trả về).

Console.WriteLine("Exchange Data = {0}\n\r",

BitConverter.ToString(exchangeData));

// ****** GỬI KHÓA ******

// Bây giờ, khóa phiên có thể được gửi đi bằng các

// kênh giao tiếp bình thường.