public static byte [] ComputeHash (string file)
{
if (!File.Exists (file))
return Empty<byte>.Array;
const int buffer_size = 8192;
var sha1 = new SHA1Managed ();
using (var stream = new FileStream (file, FileMode.Open, FileAccess.Read, FileShare.Read)) {
var buffer = new byte [buffer_size];
using (var crypto_stream = new CryptoStream (Stream.Null, sha1, CryptoStreamMode.Write))
CopyStreamChunk (stream, crypto_stream, buffer, (int) stream.Length);
}
return sha1.Hash;
}
}