560
Chương 14: Mật mã
Console.WriteLine(BitConverter.ToString(hash));
}
}
}
}
Lệnh
KeyedHashStreamExample KeyedHashStreamExample.cs secretKey
sẽ sinh ra mã băm
như sau:
95-95-2A-8E-44-D4-3C-55-6F-DA-06-44-27-79-29-81-15-C7-2A-48
Ứng dụng KeyedHashMessageExample.cs (có trong đĩa CD đính kèm) trình bày cách tạo một
mã băm có khóa từ một chuỗi. Ứng dụng này yêu cần hai đối số dòng lệnh: một thông điệp và
một khóa, và sẽ tạo ra mã băm có khóa cho chuỗi thông điệp bằng khóa này. Ví dụ, lệnh
KeyedHashMessageExample "Two hundred dollars is my final offer" secretKey
sẽ sinh ra
mã băm như sau:
83-43-0D-9D-07-6F-AA-B7-BC-79-CD-6F-AD-7B-FA-EA-19-D1-24-44
6.
6.
B o v file b ng phép m t hóa đ i x ng
ả ệ
ằ
ậ
ố ứ
B o v file b ng phép m t hóa đ i x ng
ả ệ
ằ
ậ
ố ứ
Bạn cần mật hóa một file bằng giải thuật mật hóa đối xứng (symmetric
encryption).
Trước hết, bạn phải thể hiện hóa một trong các lớp giải thuật đối xứng cụ thể
dẫn xuất từ lớp
System.Security.Cryptography.SymmetricAlgorithm
. Sau đó, gọi
phương thức
CreateEncryptor
hay
CreateDecryptor
của đối tượng
SymmetricAlgorithm
để thu lấy một đối tượng có hiện thực giao diện
System.Security.Cryptography.ICryptoTransform
. Sử dụng đối tượng
ICryptoTransform
này kết hợp với một đối tượng
System.Security.Cryptography.CryptoStream
để mật hóa hay giải mật hóa dữ liệu
đọc từ một file (được truy xuất bằng một đối tượng
System.IO.FileStream
).
Lớp trừu tượng
SymmetricAlgorithm
cung cấp một lớp cơ sở để tất cả các hiện thực giải thuật
đối xứng cụ thể dẫn xuất từ đó. Thư viện lớp .NET Framework có bốn hiện thực giải thuật đối
xứng cụ thể được liệt kê trong bảng 14.3, mỗi lớp là một thành viên của không gian tên
System.Security.Cryptography
. Các lớp có đuôi là
CryptoServiceProvider
bọc lấy các chức
năng do Win32 CryptoAPI cung cấp, trong khi các lớp có đuôi là
Managed
(hiện tại chỉ có
RijndaelManaged
) được hiện thực hoàn toàn bằng mã lệnh được-quản-lý. Bảng này cũng cho
thấy chiều dài khóa mà mỗi giải thuật hỗ trợ (chiều dài mặc định được in đậm). Nói chung,
khóa càng dài, càng khó giải mật hóa ciphertext nếu không có khóa, nhưng cũng có nhiều yếu
tố khác cần xem xét.
Bảng 14.3 Các hiện thực giải thuật đối xứng
Tên giải thuật
Tên lớp
Chiều dài khóa (bit)