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

557

Chương 14: Mật mã

return (oldHashString == newHashString.ToString());

}

Trong đoạn mã dưới đây, mã băm mới là một mảng byte và mã băm cũ là một chuỗi được mã
hóa theo Base64. Đoạn mã này sẽ mã hóa mã băm mới thành chuỗi Base64 rồi thực hiện phép
so sánh chuỗi.

// Phương thức dùng để so sánh mã băm mới với

// mã băm có sẵn (được biểu diễn ở dạng chuỗi Base64).

private static bool VerifyB64Hash(byte[] hash, string oldHashString) {

// Tạo biểu diễn chuỗi Base64 cho mã băm mới.

string newHashString = System.Convert.ToBase64String(hash);

// So sánh biểu diễn chuỗi của mã băm cũ và mới,

// rồi trả về kết quả.

return (oldHashString == newHashString);

}

Cuối cùng, đoạn mã dưới đây so sánh hai mã băm được biểu diễn ở dạng mảng byte. Thư viện
lớp .NET Framework không có phương thức nào thực hiện kiểu so sánh này, do đó bạn phải
viết một vòng lặp để so sánh các phần tử của hai mảng. Đoạn mã này có sử dụng một vài kỹ
thuật không tốn nhiều thời gian như: bảo đảm các mảng byte có cùng chiều dài trước khi bắt
đầu so sánh chúng, và trả về

false

khi tìm thấy khác biệt đầu tiên.

// Phương thức dùng để so sánh mã băm mới với

// mã băm có sẵn (được biểu diễn ở dạng mảng byte).

private static bool VerifyByteHash(byte[] hash, byte[] oldHash) {

// Nếu một mảng là null, hoặc hai mảng có chiều dài khác nhau

// thì chúng không bằng nhau.

if (hash == null || oldHash == null || hash.Length != oldHash.Length)

return false;

// Duyệt qua mảng byte và so sánh mỗi giá trị byte.

for (int count = 0; count < hash.Length; count++) {

if (hash[count] != oldHash[count]) return false;

}

// Hai mã băm bằng nhau.

return true;

}

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.