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

581

Chương 14: Mật mã

// Trích khóa phiên từ dữ liệu trao đổi bằng

// phương thức DeformatKeyExchange.

byte[] sessionKey = DeformatKeyExchange(exchangeData,

cspParams);

// Hiển thị khóa phiên vừa được trích.

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

BitConverter.ToString(sessionKey));

// Nhấn Enter để kết thúc.

Console.ReadLine();

}

}

// Phương thức dùng để mật hóa và định dạng khóa phiên đối xứng.

// Để mật hóa khóa phiên, chúng ta cần truy xuất PUBLIC KEY

// của người nhận (trong cấu trúc RSAParameters).

private static byte[] FormatKeyExchange(byte[] sessionKey,

RSAParameters rsaParams) {

// Tạo một giải thuật bất đối xứng RSA.

using (RSACryptoServiceProvider asymAlg =

new RSACryptoServiceProvider()) {

// Nạp PUBLIC KEY của người nhận.

asymAlg.ImportParameters(rsaParams);

// Tạo một RSA OAEP formatter để định dạng dữ liệu trao đổi.

RSAOAEPKeyExchangeFormatter formatter

= new RSAOAEPKeyExchangeFormatter();

// Chỉ định giải thuật RSA dùng để mật hóa khóa phiên.

formatter.SetKey(asymAlg);

// Mật hóa và định dạng khóa phiên rồi trả về kết quả.

return formatter.CreateKeyExchange(sessionKey);

}