gpt4 book ai didi

c# - 更快的 MD5 替代品?

转载 作者:可可西里 更新时间:2023-11-01 07:48:41 24 4
gpt4 key购买 nike

我正在开发一个在整个驱动器中搜索给定文件的程序。目前,我计算已知文件的 MD5 哈希值,然后递归扫描所有文件,寻找匹配项。

唯一的问题是 MD5 在处理大文件时速度非常慢。有没有我可以使用的更快的替代方案,同时保留非常小的误报概率?

所有代码都在 C# 中。

谢谢。

更新

我读到过即使是 MD5 也可以非常快并且磁盘 I/O 应该是限制因素。这让我相信我的代码可能不是最优的。这种方法有什么问题吗?

        MD5 md5 = MD5.Create();
StringBuilder sb = new StringBuilder();
try
{
using (FileStream fs = File.Open(fileName, FileMode.Open, FileAccess.Read))
{
foreach (byte b in md5.ComputeHash(fs))
sb.Append(b.ToString("X2"));
}
return sb.ToString();
}
catch (Exception)
{
return "";
}

最佳答案

我希望您仅在文件大小已经匹配时才检查 MD5 匹配。

另一个优化是对前 1K(或其他一些任意但相当小的数字)进行快速校验,并在处理整个文件之前确保它们匹配。

当然,所有这些都假设您只是在寻找特定文件的匹配/不匹配决策。

关于c# - 更快的 MD5 替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/288732/

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