示例#1
0
		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;
		}
示例#2
0
        /*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;
        }
示例#3
0
        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;
        }