public static byte[] CopyStream(Stream inputStream, Stream outputStream, string seed = null)
{
using (var md5 = MD5.Create())
{
if (seed != null)
{
var bytes = Encoding.UTF8.GetBytes(seed);
md5.TransformBlock(bytes, 0, bytes.Length, bytes, 0);
}
var buffer = Buffer;
int byteCount;
while ((byteCount = inputStream.Read(buffer, 0, buffer.Length)) > 0)
{
outputStream.Write(buffer, 0, byteCount);
md5.TransformBlock(buffer, 0, byteCount, buffer, 0);
}
md5.TransformFinalBlock(buffer, 0, 0);
return md5.Hash;
}
}