public static byte[] GetMD5OfFile(string filename, string seed = null)
{
using (var md5 = MD5.Create())
{
if (seed == null)
{
using (var stream = File.OpenRead(filename))
{
return md5.ComputeHash(stream);
}
}
else
{
var bytes = Encoding.UTF8.GetBytes(seed);
md5.TransformBlock(bytes, 0, bytes.Length, bytes, 0);
using (var stream = File.OpenRead(filename))
{
var buffer = Buffer;
int byteCount;
while ((byteCount = stream.Read(buffer, 0, buffer.Length)) > 0)
{
md5.TransformBlock(buffer, 0, byteCount, buffer, 0);
}
md5.TransformFinalBlock(buffer, 0, 0);
return md5.Hash;
}
}
}
}