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

579

Chương 14: Mật mã

Cũng như nên sử dụng một khóa đối xứng có chiều dài phù hợp với tính bí mật
của dữ liệu đang được bảo vệ, bạn nên mật hóa khóa phiên bằng một giải thuật
bất đối xứng và chiều dài khóa ít nhất cũng phải tương đương với khóa đối
xứng. Nếu khóa bất đối xứng yếu hơn khóa đối xứng, có khả năng kẻ tấn công sẽ
phá vỡ giải thuật bất đối xứng và thu lấy khóa đối xứng thay vì cố giải mật hóa
dữ liệu đã-được-mật-hóa-đối-xứng. Xem

[

http://www.ietf.org/rfc/rfc3766.txt]

(có trong đĩa CD đính kèm) để biết chi tiết về sự tương đương giữa chiều dài
khóa đối xứng và bất đối xứng.

Kế đó, phương thức

Main

gọi phương thức

FormatKeyExchange

với đối số là một mảng byte

chứa khóa đối xứng và một đối tượng

RSAParameters

chứa khóa công khai của người nhận.

Phương thức

FormatKeyExchange

trả về một mảng byte chứa khóa đối xứng đã-được-mật-hóa

và đã-được-định-dạng, chuẩn bị gửi đi. Kế tiếp, phương thức

Main

gọi phương thức

DeformatKeyExchange

với đối số là dữ liệu trao đổi đã được định dạng và đối tượng

CspParameters

chứa một tham chiếu đến kho chứa khóa MyKeys (chứa khóa riêng của người

nhận). Trong suốt quá trình này, phương thức

Main

sẽ hiển thị khóa phiên gốc, dữ liệu trao đổi

đã được định dạng, và cuối cùng là khóa phiên đã được giải định dạng.

using System;

using System.Text;

using System.Security.Cryptography;

public class KeyExchangeExample {

public static void Main() {

// Khai báo một biến RSAParameters, biến này sẽ

// chứa thông tin PUBLIC KEY của người nhận.

RSAParameters recipientsPublicKey;

// Khai báo một biến CspParameters, biến này sẽ cho biết

// PRIVATE KEY được lưu trữ trong kho chứa khóa nào.

// Thông thường, chỉ có người nhận mới có thể truy xuất

// thông tin này. Với mục đích minh họa, chúng ta sẽ tạo

// một cặp khóa ngay đầu ví dụ và sử dụng các khóa này

// cho cả bên gửi và bên nhận.

CspParameters cspParams = new CspParameters();

cspParams.KeyContainerName = "MyKeys";

// Tạo cặp khóa bất đối xứng bằng lớp RSACryptoServiceProvider.

// Lưu các khóa này vào một kho chứa khóa có tên là "MyKeys"

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.