抱歉,意思没讲清楚。我的意思是,对文件分割n块后,计算了n块的MD5,反而比对文件直接计算1个MD5的时间短。

解决方案 »

  1.   

    分成5块,是把文件分成了5份,分别用流读取?还是将五块都放在内存里了?如果放在内存里,必然比直接用流快,原因不说你也明白吧,一个读内存一个读磁盘。如果分成5块,但是没放内存里,而是写成了5个文件,然后分别用stream读取,这时候还比直接用stream快,那我只能猜测是用了多线程了。
      

  2.   

    实际上分成n份,我是一块一块读入计算的。但是文件流的话,就是直接赋于流,计算的
     using (BinaryReader binReader = new BinaryReader(File.Open(this.FileName, FileMode.Open)))
                {
                    while (current < this.Count) //总共执行Count块
                    {
                        //计算当前块的BF
                        this.ComputeHash(binReader.ReadBytes(this.BlockSize), current);
                        current++;
                    }
                }
    我看了HMACSHA1这个函数实现,它好像每次是读入4kb,用于计算。不知是否这个原因。