System.Security.Cryptography.MD5を使用すると非常に簡単です。
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(filename))
{
return md5.ComputeHash(stream);
}
}
(実際に使用されているMD5実装は破棄する必要はないと思いますが、とにかく破棄する可能性があります。)
その後、結果をどのように比較するかはあなた次第です。たとえば、バイト配列をbase64に変換したり、バイトを直接比較したりできます。(配列はオーバーライドされないことに注意してくださいEquals
。base64を使用する方が簡単ですが、ハッシュの比較のみに関心がある場合は、効率が少し低下します。)
ハッシュを文字列として表す必要がある場合は、次を使用して16進数に変換できます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();
}
}
}