Это очень просто с помощью System.Security.Cryptography.MD5 :
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(filename))
{
return md5.ComputeHash(stream);
}
}
(Я считаю, что на самом деле используемую реализацию MD5 не нужно утилизировать, но я все равно, вероятно, все равно буду это делать.)
Как вы сравниваете результаты впоследствии, зависит от вас; например, вы можете преобразовать байтовый массив в base64 или сравнить байты напрямую. (Просто учтите, что массивы не переопределяются Equals
. Использование base64 проще для правильного понимания, но немного менее эффективно, если вы действительно заинтересованы только в сравнении хешей.)
Если вам нужно представить хеш в виде строки, вы можете преобразовать его в шестнадцатеричный код, используя 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();
}
}
}