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

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

new PasswordDeriveBytes(args[1], salt);

// Thiết lập giải thuật băm dùng để tạo khóa, tên

// giải thuật được chỉ định trong đối số dòng lệnh thứ nhất.

// Giải thuật được sử dụng mặc định là SHA-1.

pdb.HashName = args[0];

// Thiết lập số lần lặp là 200 (đây là số lần giải thuật băm

// được áp dụng cho password để tạo khóa). Mặc định là 100.

pdb.IterationCount = 200;

// Tạo một khóa gồm 8 byte (64 bit) từ password.

// Chiều dài của khóa bị giới hạn bởi chiều dài của

// mã băm - 160 bit đối với SHA-1.

byte[] key = pdb.GetBytes(8);

// Hiển thị khóa và salt.

Console.WriteLine("Key = {0}", BitConverter.ToString(key));

Console.WriteLine("Salt = {0}", BitConverter.ToString(salt));

}

}

Chạy lệnh

DerivedKeyExample SHA1 S0meVereeStr@ngeP@$$w0rd

(sử dụng giải thuật băm

SHA-1 để truy lại một khóa gồm 8 byte từ chuỗi "

S0meVereeStr@ngeP@$$w0rd

") sẽ sinh ra kết

xuất tương tự như sau:

Key = 53-72-74-5B-A4-88-A4-80

Salt = 70-82-79-F4-3B-F9-DF-D2

Chú ý rằng, mỗi khi bạn chạy cùng một lệnh,

DerivedKeyExample

sinh ra khóa khác nhau. Đó

là do tác dụng của salt. Nếu bạn bỏ đi dòng lệnh gán một giá trị ngẫu nhiên vào salt (được in
đậm trong đoạn mã trên), sau đó biên dịch lại và chạy

DerivedKeyExample

, bạn sẽ nhận thấy ví

dụ này luôn tạo ra cùng một khóa với một password cho trước.

8.

8.

G i m t bí m t b ng phép m t hóa b t đ i x ng

ử ộ

ậ ằ

ấ ố ứ

G i m t bí m t b ng phép m t hóa b t đ i x ng

ử ộ

ậ ằ

ấ ố ứ

Bạn cần sử dụng phép mật hóa bất đối xứng (asymmetric encryption) để gửi một
bí mật.

Thể hiện hóa lớp giải thuật bất đối xứng

System.Security.Cryptography.

RSACryptoServiceProvider

. Sử dụng phương thức

RSACryptoServiceProvider.

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.