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

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

ật mã (cryptography) là một trong những mặt phức tạp nhất của quá trình phát
triển phần mềm mà bất kỳ nhà phát triển nào cũng sẽ sử dụng. Lý thuyết kỹ thuật
mật mã hiện đại cực kỳ khó hiểu và đòi hỏi một mức kiến thức toán học mà tương

đối ít người có được. May mắn là thư viện lớp .NET Framework cung cấp các hiện thực dễ sử
dụng cho hầu hết các kỹ thuật mật mã thông dụng và hỗ trợ các giải thuật phổ biến nhất.
Chương này sẽ bàn về các vấn đề sau:

M

Tạo số ngẫu nhiên (mục 14.1).

Tạo và xác minh các mã băm mật mã và các mã băm có khóa (mục 14.2, 14.3, 14.4, và
14.5).

Sử dụng giải thuật đối xứng và không đối xứng để mật hóa và giải mật hóa dữ liệu
(mục 14.6 và 14.8).

Tìm lại, lưu trữ, và chuyển đổi các khóa mật mã (mục 14.7, 14.9, và 14.10).

Khi nghĩ cách áp dụng các kỹ thuật trong chương này vào mã lệnh, bạn nên nhớ
rằng mật mã chẳng phải là cái mà bạn hiện thực đơn lẻ. Mật mã không ngang
bằng với bảo mật (security
); sử dụng mật mã chỉ là một phần nhỏ trong việc tạo
một giải pháp an toàn.

Đối với những ai chưa quen thuộc với mật mã, dưới đây là định nghĩa của một số từ quan
trọng:

Encrypt (động từ, tạm dịch là mật hóa) là mã hóa thông tin theo cách nào đó để mọi
người không thể đọc được nó, trừ những ai có khóa.

Decrypt (động từ, tạm dịch là giải mật hóa) là giải mã thông tin đã-được-mật-hóa.

Key là chuỗi các bit dùng để mật hóa và giải mật hóa thông tin.

Plaintext là text chưa-được-mật-hóa hay đã-được-giải-mật-hóa.

Ciphertext là text đã-được-mật-hóa.

1.

1.

T o s ng u nhiên

ạ ố ẫ

T o s ng u nhiên

ạ ố ẫ

Bạn cần tạo một số ngẫu nhiên dùng cho các ứng dụng mật mã và bảo mật.

Sử dụng một bộ tạo số ngẫu nhiên mật mã (cryptographic random number
generator
), chẳng hạn

System.Security.Cryptography.RNGCryptoServiceProvider

.

Lớp

System.Random

là một bộ tạo số giả ngẫu nhiên, nó sử dụng một giải thuật toán học để mô

phỏng việc tạo số ngẫu nhiên. Thực ra, giải thuật này là tất định (deterministic), nghĩa là bạn
luôn có thể tính được số kế tiếp sẽ là gì dựa trên số đã được tạo trước đó. Điều này nghĩa là
các số được tạo bởi lớp

Random

sẽ không phù hợp khi tính bảo mật được ưu tiên, chẳng hạn tạo

khóa mật hóa và password.
Khi cần một số ngẫu nhiên không tất định (nondeterministic) dùng trong các ứng dụng liên
quan đến mật mã hay bảo mật, bạn phải sử dụng bộ tạo số ngẫu nhiên dẫn xuất từ lớp

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.