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();
}
}
}