我試圖獲取存儲在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