我试图获取存储在Windows Azure Blob存储区中的文件的散列。散列文件时速度变慢
我希望能够将散列与存储在本地机器上的版本进行比较,以查看是否有区别。
下面的代码得到散列。
_CloudBlobClient = SetupCloudBlobClient();
CloudBlobContainer cbContainer = _CloudBlobClient.GetContainerReference(sContainer);
CloudBlockBlob cbBlob = cbContainer.GetBlockBlobReference(sBlob);
BlobStream stream = cbBlob.OpenRead();
StringBuilder sb = new StringBuilder();
MD5 md5 = MD5CryptoServiceProvider.Create();
byte[] hash = md5.ComputeHash(stream);
foreach (byte b in hash)
sb.Append(b.ToString("x2"));
return sb.ToString();
的问题是,这工作正常对于小文件,但我有大于100MB的文件工作,这些文件的服务只是时间过长并最终超时。
我想知道这是否是正确的方法,或者如果有另一种方法来确定两个文件是否包含相同的数据,这将更快地处理大型文件。
谢谢, 马特
我有一种感觉,这可能是与这样做,因为我上传的文件在2MB块我现在从第一个2MB创建散列。 int length =((int)stream.Length> 2048000)? 2048000:(int)stream.Length; byte [] Buffer = new byte [length]; stream.Read(Buffer,0,length); byte [] hash = md5.ComputeHash(Buffer); 这并不理想,但它现在必须做,感谢您的回复 – Midimatt 2011-04-04 04:29:17