+ -
当前位置:首页 → 问答吧 → 为什么对整个文件流计算MD5比分块慢

为什么对整个文件流计算MD5比分块慢

时间:2011-12-22

来源:互联网

计算一个文件的MD5和把文件分成n分,计算每块的MD5。为什么对文件流计算的还慢呢?
C# code
HMACSHA1 hmac = new HMACSHA1(BitConverter.GetBytes(HashKey[0]));
                    hashes = hmac.ComputeHash(data);//其中一个文件块,共n块

HMACSHA1 hmac2 = new HMACSHA1(BitConverter.GetBytes(HashKey[0]));
                        hashes = hmac2.ComputeHash(fstream); //计算文件流hmac值// 计算

作者: c20110101   发布时间: 2011-12-22

因为流要对整个文件进行摘要,而块摘要就是那一块而已。

作者: sunzongbao2007   发布时间: 2011-12-22

对的。范围问题吧应该

作者: thy442030800   发布时间: 2011-12-22

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

作者: c20110101   发布时间: 2011-12-24

计算的数据量,都是文件大小

作者: c20110101   发布时间: 2011-12-24

分成5块,是把文件分成了5份,分别用流读取?还是将五块都放在内存里了?如果放在内存里,必然比直接用流快,原因不说你也明白吧,一个读内存一个读磁盘。

如果分成5块,但是没放内存里,而是写成了5个文件,然后分别用stream读取,这时候还比直接用stream快,那我只能猜测是用了多线程了。

作者: sunzongbao2007   发布时间: 2011-12-27