575
Chương 14: Mật mã
2. Thiết lập trường
KeyContainerName
của đối tượng
CspParameters
là một giá trị chuỗi
mô tả tên của kho chứa khóa cần sử dụng; chuỗi có thể chứa khoảng trắng.
3. Tạo một đối tượng
RSACryptoServiceProvider
hay
DSACryptoServiceProvider
, và
truyền đối tượng
CspParameters
làm đối số cho phương thức khởi dựng.
Nếu kho chứa khóa tồn tại bên trong tầm vực của CSP và chứa các khóa thích hợp, CSP sẽ sử
dụng các khóa này khi thực hiện các thao tác mật mã. Nếu kho chứa khóa hay khóa không tồn
tại, CSP sẽ tự động tạo khóa mới. Để buộc CSP lưu trữ các khóa mới được tạo vào kho chứa
khóa, bạn phải thiết lập thuộc tính
PersistKeyInCsp
(của đối tượng
RSACryptoServiceProvider
hay
DSACryptoServiceProvider
) là
true
.
Phương thức
LoadKeys
dưới đây là một đoạn trích trong file StoreAsymmetricKeyExample.cs
(xem đĩa CD đính kèm).
LoadKeys
tạo một đối tượng
RSACryptoServiceProvider
và cấu hình
cho nó sử dụng một kho chứa khóa có tên là
MyKeys
. Bằng cách chỉ định
PersistKeyInCsp
là
true
, giải thuật sẽ tự động lưu trữ các khóa mới được tạo vào kho chứa khóa này.
// Phương thức này tạo một đối tượng RSACryptoServiceProvider
// và nạp các khóa từ một kho chứa khóa nếu chúng tồn tại; nếu không,
// RSACryptoServiceProvider sẽ tự động tạo các khóa mới và lưu
// chúng vào kho chứa khóa để sử dụng sau này.
public static void LoadKeys(string container) {
// Tạo một đối tượng CspParameters và thiết lập trường
// KeyContainerName là tên của kho chứa khóa.
System.Security.Cryptography.CspParameters cspParams =
new System.Security.Cryptography.CspParameters();
cspParams.KeyContainerName = container;
// Tạo một đối tượng giải thuật RSA và truyền đối tượng
// CspParameters làm đối số trong phương thức khởi dựng.
using (System.Security.Cryptography.RSACryptoServiceProvider
rsaAlg = new
System.Security.Cryptography.RSACryptoServiceProvider(cspParams)){
// Cấu hình cho đối tượng RSACryptoServiceProvider
// lưu trữ khóa vào kho chứa khóa.
rsaAlg.PersistKeyInCsp = true;
// Hiển thị PUBLIC KEY.
System.Console.WriteLine(rsaAlg.ToXmlString(false));
}
}