gpt4 book ai didi

c# - 大文件的 MD5 哈希值会不一致吗?

转载 作者:行者123 更新时间:2023-11-30 13:48:48 27 4
gpt4 key购买 nike

我知道 MD5 散列不再适用于安全性,但我一直将它们用作校验和以确保文件在下载/传输后没有损坏,我认为这仍然可以。虽然在一个大于 1 GB 的文件上使用此方法后,我发现存储的和生成的哈希值不匹配。这是在我通过 U 盘将它从一台计算机传输到另一台计算机之后。我在网上搜索过,发现一些对大文件的引用可能会产生不一致的哈希值,但我没有看到任何结论。

我正在使用 MD5CryptoServiceProviderComputeHash(Stream inputStream) 来创建传输前后的哈希值,所以应该不是字节格式被弄乱的情况在不同的语言或其他东西之间。我还尝试再次从文件构建哈希,第二次似乎可以很好地创建匹配的哈希。我只是运气不好,在将文件复制到 USB 内存棒上和从 USB 内存棒上复制下来后,实际上最终损坏了文件吗?或者这是 MD5 的一个已知问题,我应该完全放弃它吗?如果是这样,什么是最好的替代品,理想情况下也可以作为 C# 中的标准提供,SHA1 是下一个最佳选择吗?

最佳答案

不,为此目的使用 MD5 没有任何问题。 哈希将始终相同。文件中一定有一些不同。您可以使用二进制差异工具(例如在某些十六进制编辑器中找到的工具)来自行验证是否存在差异。

您可以使用另一个 MD5 工具(例如 md5sum)来验证您的计算是否正确。或 HashTab .


不再推荐 MD5 的原因不是它不起作用,或者类似的原因。这是因为冲突的概率(为两个不同的输入生成相同的散列)足够高,以至于攻击者可以故意生成冲突以绕过安全功能。

这正是 Flame malware did 的内容欺骗 Microsoft 签名。

关于c# - 大文件的 MD5 哈希值会不一致吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11311890/

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