static byte [] HashStream (Stream stream, int length)
{
stream.Position = 0;
byte [] buffer = new byte [BlockSize];
using (SHA1Managed digest = new SHA1Managed ()) {
while (length > 0) {
int len = stream.Read (buffer, 0, System.Math.Min (length, BlockSize));
if (len == length)
digest.TransformFinalBlock (buffer, 0, len);
else
digest.TransformBlock (buffer, 0, len, null, 0);
length -= len;
}
return digest.Hash;
}
}