582
Chương 14: Mật mã
}
// Phương thức dùng để giải mật hóa dữ liệu trao đổi và trích khóa phiên
// đối xứng. Để giải mật hóa dữ liệu trao đổi, chúng ta cần truy xuất
// PRIVATE KEY (từ kho chứa khóa do đối số cspParams chỉ định).
private static byte[] DeformatKeyExchange(byte[] exchangeData,
CspParameters cspParams) {
// Tạo một giải thuật bất đối xứng RSA.
using (RSACryptoServiceProvider asymAlg =
new RSACryptoServiceProvider(cspParams)) {
// Tạo một RSA OAEP deformatter để trích khóa phiên
// từ dữ liệu trao đổi.
RSAOAEPKeyExchangeDeformatter deformatter
= new RSAOAEPKeyExchangeDeformatter();
// Chỉ định giải thuật RSA dùng để giải mật hóa dữ liệu trao đổi.
deformatter.SetKey(asymAlg);
// Giải mật hóa dữ liệu trao đổi và trả về khóa phiên.
return deformatter.DecryptKeyExchange(exchangeData);
}
}
}
Chạy
KeyExchangeExample
sẽ sinh ra kết xuất tương tự như sau:
Session Key at Source = EE-5B-16-5B-AC-46-3D-72-CC-73-19-D9-0B-8A-19-E2-A6-02-13-
BE-F8-CE-DF-40
Exchange Data = 60-FA-3B-63-41-25-F1-AD-08-F9-FC-67-CD-C6-FB-3E-0F-C3-62-
C6-3F-5C-C0-7E-D1-60-2D-19-58-07-EE-BB-7C-53-A5-C2-FB-CA-D7-64-FF-BA-33-77-AC-52-
87-5F-75-E7-57-99-01-90-CD-70-36-1E-53-0C-82-C6-CE-B8-BC-8B-C9-39-6F-29-39-5F-6C-
A6-43-E5-B0-A1-42-46-1C-9B-1C-72-EB-5E-67-06-44-C0-CE-AB-70-B8-39-8E-9F-01-E8-49-
51-36-D6-27-09-94-DA-42-CE-79-C2-72-88-4D-CE-63-B4-A0-AC-07-AF-26-A7-76-DE-21-BE-
A5
Session Key at Destination = EE-5B-16-5B-AC-46-3D-72-CC-73-19-D9-0B-8A-19-E2-A6-
02-13-BE-F8-CE-DF-40