我知道 MD5 哈希不再可用于安全性,但我一直将它们用作校验和,以确保下载/传输后文件没有损坏,我认为这仍然可以。尽管在对大于千兆字节的文件使用此方法后,我发现存储和生成的哈希值不匹配。这是在我通过 USB 记忆棒将其从一台计算机传输到另一台计算机之后。我在网上搜索过,发现一些对大文件的引用可能会产生不一致的哈希值,但我没有看到任何结论。
我使用ComputeHash(Stream inputStream)
来MD5CryptoServiceProvider
在传输之前和之后创建哈希,因此不应该是字节格式在不同语言或其他东西之间混乱的情况。我还尝试再次从文件中构建哈希,第二次它似乎可以很好地创建匹配的哈希。我是不是很不走运,实际上在将文件复制到 U 盘上和从 U 盘上复制下来之后最终损坏了文件?或者这是 MD5 的一个已知问题,我应该完全放弃它?如果是这样,理想情况下也可以作为 C# 标准提供的最佳替代品是什么,SHA1 是下一个最佳选择吗?