Ini sangat sederhana menggunakan System.Security.Cryptography.MD5 :
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(filename))
{
return md5.ComputeHash(stream);
}
}
(Saya percaya bahwa sebenarnya implementasi MD5 yang digunakan tidak perlu dibuang, tapi saya mungkin masih akan melakukannya.)
Bagaimana Anda membandingkan hasilnya setelah itu terserah Anda; Anda dapat mengkonversi array byte ke base64 misalnya, atau membandingkan byte secara langsung. (Perlu diketahui bahwa array tidak mengesampingkan Equals. Menggunakan base64 lebih mudah untuk dilakukan dengan benar, tetapi sedikit kurang efisien jika Anda benar-benar hanya tertarik membandingkan hash.)
Jika Anda perlu merepresentasikan hash sebagai string, Anda bisa mengubahnya menjadi hex menggunakan 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();
}
}
}