gpt4 book ai didi

hash - 使用 2 个不同的哈希函数是检查文件完整性的好方法吗?

转载 作者:行者123 更新时间:2023-12-04 16:37:58 35 4
gpt4 key购买 nike

我有一个网站,用户可以在其中上传他们的文件;这些存储在服务器上,它们的元数据记录在数据库中。我正在实现一些简单的完整性检查,即“此文件的内容现在是否与上传时逐字节相同?”

一个例子:对于 userfile.jpg 的内容, MD5 哈希值是 39f9031a154dc7ba105eb4f76f1a0fd4和 SHA-1 哈希是 878d8d667721e356bf6646bd2ec21fff50cdd4a9 . 如果此文件的内容发生更改,但前后 MD5 哈希值相同,那么 SHA-1 哈希值是否也可能保持不变? (使用散列,有时您可能会遇到散列冲突 - 两种不同的散列算法会同时发生这种情况吗?)

还是为一个文件计算两个不同的哈希值毫无意义(我应该尝试其他一些验证完整性的机制)?

编辑:我并不担心意外损坏,但我应该防止用户在未注意到的情况下更改文件(birthday attack 和 friend )。

我可能会使用一个哈希值,SHA-512 - 检查不会经常发生,因为它会成为性能瓶颈,无论如何,“正如 Bruce Schneier 所说,已经有足够快的、不安全的系统了。–@MichaelGG 在注释”。

最佳答案

MD5 可能对您正在做的事情是安全的,但没有理由继续使用具有已知缺陷的哈希。事实上,除非您有一些已知的主要性能瓶颈,否则您没有理由不使用 SHA256 或 SHA512。

编辑:澄清一下,没有理由使用两种算法;只需使用一款适合您的需求即可。如果您担心人们对您进行 MD5 冲突(例如,这是安全威胁吗?),那么请使用不那么弱的算法,例如 SHA256。

编辑 2:为了解决一个显然仍然常见的误解:在散列上发现随机冲突不是 1/2^n 的概率。它更接近 1/2^(n/2)。因此 128 位哈希可能会与 2^64 次尝试发生冲突。见 birthday attack详情。

关于hash - 使用 2 个不同的哈希函数是检查文件完整性的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/537989/

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