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

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

// Chuyển chuỗi password (đối số dòng lệnh thứ hai)

// thành một mảng byte.

byte[] pwordData = Encoding.Default.GetBytes(args[1]);

// Tạo mã băm của password.

byte[] hash = hashAlg.ComputeHash(pwordData);

// Hiển thị mã băm của password.

Console.WriteLine(BitConverter.ToString(hash));

}

}

}

Chạy lệnh

HashPasswordExample SHA1 ThisIsMyPassword

sẽ hiển thị mã băm sau đây:

80-36-31-2F-EA-D9-93-45-79-34-C9-FD-21-EE-8D-05-16-DC-A1-E2

3.

3.

Tính mã băm c a file

Tính mã băm c a file

Bạn cần xác định nội dung của một file có thay đổi theo thời gian hay không.

Tạo mã băm cho nội dung của file bằng phương thức

ComputeHash

của lớp

System.Security.Cryptography.HashAlgorithm

. Lưu trữ mã băm này để sau này

so sánh với các mã băm được tạo mới.

Ngoài việc cho phép bạn lưu trữ password một cách an toàn (đã được thảo luận trong mục
14.2), mã băm còn cung cấp một phương cách rất hay để xác định một file có thay đổi hay
không. Bằng cách tính toán và lưu trữ mã băm của một file, sau này bạn có thể tính lại mã
băm của file này để xác định file có thay đổi trong thời gian chuyển tiếp hay không. Giải thuật
băm sẽ sinh ra một mã băm rất khác ngay cả chỉ với một thay đổi rất nhỏ trong file, nên khả
năng hai file khác nhau cho ra cùng mã băm là cực kỳ nhỏ.

Các mã băm chuẩn không phù hợp khi gửi cùng với một file để bảo đảm tính
toàn vẹn của nội dung file. Nếu ai đó chặn được file trên đường đi, người này có
thể dễ dàng thay đổi file và tính lại mã băm. Chúng ta sẽ thảo luận một biến thể
của mã băm trong mục 14.5 (mã băm có khóa), mã băm này phù hợp cho việc
bảo đảm tính toàn vẹn của file trên đường đi.

Dễ dàng tạo được mã băm của một file với lớp

HashAlgorithm

. Trước hết, thể hiện hóa một

trong các hiện thực giải thuật băm dẫn xuất từ lớp

HashAlgorithm

(bạn cần truyền tên giải

thuật băm cho phương thức

HashAlgorithm.Create

—xem tên các giải thuật băm hợp lệ trong

bảng 14.1). Kế tiếp, thay vì truyền một mảng byte cho phương thức

ComputeHash

, bạn hãy

truyền một đối tượng

System.IO.Stream

mô tả file cần được tạo mã băm. Đối tượng

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.