我必须在某些机器上同步大文件。文件最大可达 6GB。同步将每隔几周手动完成。我不能考虑文件名,因为它们可以随时更改。
我的计划是在目标 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);
}
}
问题是运行时间:
- 使用 SHA256 和 1,6 GB 文件 -> 20 分钟
- 使用 MD5 和 1,6 GB 文件 -> 6.15 分钟
有没有更好更快的方法来获取校验和(也许有更好的散列函数)?