gpt4 book ai didi

c# - 对文件进行哈希处理时速度变慢

转载 作者:行者123 更新时间:2023-11-30 22:39:49 25 4
gpt4 key购买 nike

我正在尝试获取存储在 Windows Azure Blob Store 中的文件的哈希值。

然后我希望将哈希值与存储在本地计算机上的版本进行比较,看看是否存在差异。

以下代码获取哈希。

        _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,对于这些文件,服务花费的时间太长,最终会超时。

我想知道这是否是正确的方法,或者是否有另一种方法可以确定两个文件是否包含相同的数据,这种方法对于大文件的处理速度更快。

谢谢,马特

最佳答案

如果我没记错的话,问题是你在这里下载了整个文件:

byte[] hash = md5.ComputeHash(stream);

这解释了为什么这在大文件上会变得非常慢并且作为解决方案可能不可行 - 我没有任何完美的替代方案但一个想法是只生成 MD5 哈希,即在前 5 KB 数据上并另外比较文件大小 - 如果两者匹配,则假定它们相同。

关于c# - 对文件进行哈希处理时速度变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5534463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com