public override void Write(byte[] fromBuffer, int offset, int count){ #if DEBUG sw.Start(); #endif lastChecksum = md5.ComputeHash(fromBuffer, offset, count); #if DEBUG sw.Stop(); BenchmarkStats.Instance().ChecksumTime += sw.ElapsedMilliseconds; sw.Reset(); #endif //Console.WriteLine("ChecksummerStream:md5="+Convert.ToBase64String(lastChecksum)); inputStream.ChecksumToMatch = lastChecksum; inputStream.Write(fromBuffer, offset, count); length += count; }
/*private string ByteArrayToString(byte [] toConvert){ * StringBuilder sb = new StringBuilder(toConvert.Length); * for (int i = 0; i < toConvert.Length - 1; i++){ * sb.Append(toConvert[i].ToString("X")); * } * return sb.ToString(); * }*/ public override void Write(byte[] fromBuffer, int offset, int count) { if ((count - offset) >= minBlockSize) { #if DEBUG sw.Start(); #endif Array.Copy(hasher.ComputeHash(fromBuffer, offset, count), lastChecksum, 16); Array.Copy(BitConverter.GetBytes(count - offset), 0, lastChecksum, 16, 4); #if DEBUG sw.Stop(); BenchmarkStats.Instance().ChecksumTime += sw.ElapsedMilliseconds; sw.Reset(); #endif outputStream.ChecksumToMatch = lastChecksum; } outputStream.Write(fromBuffer, offset, count); length += count; }
public override void Write(byte[] fromBuffer, int offset, int count) { #if DEBUG sw.Start(); #endif data[dataPos] = 0x00; Array.Copy(fromBuffer, offset, data, dataPos + 1, count); previousChecksum = lastChecksum; lastChecksum = hashAlgo.ComputeHash(data, dataPos, count - offset + 1); if (!havePair) { dataPos = count - offset + 1; havePair = true; } else { LeafCollection.Add( new HashHolder( IH( previousChecksum, lastChecksum ) ) ); havePair = false; dataPos = 0; } #if DEBUG sw.Stop(); BenchmarkStats.Instance().ChecksumTime += sw.ElapsedMilliseconds; sw.Reset(); #endif //Console.WriteLine("ChecksummerStream:md5="+Convert.ToBase64String(lastChecksum)); inputStream.ChecksumToMatch = lastChecksum; inputStream.Write(fromBuffer, offset, count); length += count; }