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

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

byte[] plaintext = Encoding.Unicode.GetBytes(args[0]);

// Mật hóa thông điệp bằng phương thức EncryptMessage.

// Phương thức này cần PUBLIC KEY của người nhận.

byte[] ciphertext = EncryptMessage(plaintext,

recipientsPublicKey);

// Hiển thị ciphertext do phương thức EncryptMessage trả về.

// Sử dụng phương thức BitConverter.ToString method cho đơn giản

// mặc dù nó chèn dấu gạch nối (-) vào giữa các giá trị byte

// (không đúng với biểu diễn dữ liệu trong bộ nhớ).

Console.WriteLine("Formatted Ciphertext = {0}",

BitConverter.ToString(ciphertext));

// Giải mật hóa thông điệp (đã-được-mật-hóa) bằng phương thức

// DecryptMessage. Phương thức này cần truy xuất PRIVATE KEY

// của người nhận (chỉ có người nhận mới có thể truy xuất được).

// Chúng ta sẽ truyền cho nó một đối tượng CspParameters

// (cho biết PRIVATE KEY được lưu trữ trong kho chứa khóa nào).

// Giải pháp này an toàn hơn là truyền PRIVATE KEY thô

// giữa các phương thức.

byte[] decData = DecryptMessage(ciphertext, cspParams);

// Chuyển thông điệp đã-được-giải-mật-hóa từ mảng byte

// thành chuỗi và hiển thị nó ra cửa sổ Console.

Console.WriteLine("Decrypted message = {0}",

Encoding.Unicode.GetString(decData));

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

Console.ReadLine();

}

// Phương thức dùng để mật hóa (theo RSA) một thông điệp bằng

// PUBLIC KEY (nằm trong một cấu trúc RSAParameters).

private static byte[] EncryptMessage(byte[] plaintext,

RSAParameters rsaParams) {