Thật đơn giản khi sử dụng System.Security.Cryptography.MD5 :
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(filename))
{
return md5.ComputeHash(stream);
}
}
(Tôi tin rằng thực tế việc triển khai MD5 được sử dụng không cần phải xử lý, nhưng dù sao tôi vẫn có thể làm như vậy.)
Làm thế nào bạn so sánh kết quả sau đó là tùy thuộc vào bạn; bạn có thể chuyển đổi mảng byte thành base64 chẳng hạn, hoặc so sánh trực tiếp các byte. (Chỉ cần lưu ý rằng các mảng không ghi đè Equals
. Sử dụng base64 đơn giản hơn để có quyền, nhưng hơi kém hiệu quả nếu bạn thực sự chỉ quan tâm đến việc so sánh các giá trị băm.)
Nếu bạn cần biểu diễn hàm băm dưới dạng chuỗi, bạn có thể chuyển đổi nó thành hex bằng cách sử dụng BitConverter
:
static string CalculateMD5(string filename)
{
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(filename))
{
var hash = md5.ComputeHash(stream);
return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
}
}
}