我必须在一些机器上同步大文件。这些文件的大小可以达到6GB。每隔几周手动同步一次。我不能考虑文件名,因为他们可以随时更改。
我的计划是在目标 PC 和源 PC 上创建校验和,然后将所有具有校验和的文件(这些文件还没有在目标 PC 上)复制到目标 PC。 我的第一次尝试是这样的:
using System.IO;
using System.Security.Cryptography;
private static string GetChecksum(string file)
{
using (FileStream stream = File.OpenRead(file))
{
SHA256Managed sha = new SHA256Managed();
byte[] checksum = sha.ComputeHash(stream);
return BitConverter.ToString(checksum).Replace("-", String.Empty);
}
}
问题在于运行时:
- 拥有1.6 GB 文件的 SHA256-> 20分钟
- 使用1.6 GB 文件的 MD5-> 6.15分钟
有没有更好更快的方法来获得校验和(也许用一个更好的散列函数) ?