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

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

Lớp

RSACryptoServiceProvider

DSACryptoServiceProvider

không cung cấp phương thức

nào trực tiếp gỡ bỏ kho chứa khóa. Để xóa các khóa đã được lưu trữ, bạn hãy thiết lập giá trị
của

PersistKeyInCsp

false

và gọi phương thức

Clear

hay

Dispose

của đối tượng

RSACryptoServiceProvider

hay

DSACryptoServiceProvider

. Phương thức

DeleteKeys

dưới

đây sẽ trình bày kỹ thuật này:

// Phương thức này tạo một đối tượng RSACryptoServiceProvider

// và xóa các khóa hiện có khỏi kho chứa khóa.

public static void DeleteKeys(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 cần xó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

// không lưu trữ khóa vào kho chứa khóa.

rsaAlg.PersistKeyInCsp = false;

// Hiển thị PUBLIC KEY. Vì chúng ta gọi Dispose()

// sau lời gọi này nên các khóa hiện có sẽ không thay đổi

// cho đến khi phương thức được gọi lần thứ hai.

System.Console.WriteLine(rsaAlg.ToXmlString(false));

// Vì mã lệnh nằm trong khối "using" nên Dispose được gọi

// trên đối tượng RSACryptoServiceProvider. Vì đối tượng

// này được cấu hình là không lưu trữ khóa nên kho chứa khóa

// sẽ bị xóa. Thay vì gọi Dispose(), gọi rsaAlg.Clear()

// sẽ có cùng tác dụng, vì nó gián tiếp gọi Dispose().

}

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.