Mar*_*tos 87
是.从安全角度来看,MD5已完全被打破,但意外碰撞的可能性仍然很小.请确保文件不是由您不信任的人创建的,并且可能具有恶意意图.
sta*_*auf 31
出于实际目的,所创建的散列可能是适当随机的,但理论上由于Pigeonhole原则总是存在碰撞的概率.拥有不同的哈希值肯定意味着文件不同,但获取相同的哈希值并不一定意味着文件是相同的.
因此,为此目的使用哈希函数 - 无论是否考虑安全性 - 都应该始终只是检查的第一步,特别是如果已知哈希算法容易产生冲突.要可靠地确定具有相同散列的两个文件是否不同,您必须逐字节地比较这些文件.
Tho*_*nin 19
如果没有对手,MD5就足够了.但是,有人可以(故意)创建两个不同的文件,这些文件散列到相同的值(称为冲突),这可能是也可能不是问题,具体取决于您的具体情况.
由于知道已知的MD5弱点是否适用于给定的上下文是一个微妙的问题,因此建议不要使用MD5.使用抗冲突哈希函数(SHA-256或SHA-512)是安全的答案.此外,使用MD5是糟糕的公共关系(如果你使用MD5,准备必须证明你自己;而没有人会质疑你使用SHA-256).
我不推荐它.如果应用程序可以在多用户系统上运行,那么可能有用户,这将有两个具有相同md5哈希的文件(他可能是工程师并使用这些文件,或者只是好奇 - 可以从http:/轻松下载它们/www2.mat.dtu.dk/people/S.Thomsen/wangmd5/samples.html,我自己在写这个答案时下载了两个样本).另一件事是,某些应用程序可能出于任何原因存储此类重复项(我不确定,如果有任何此类应用程序但存在可能性).
如果您唯一地识别程序生成的文件,我会说可以使用MD5.否则,我会推荐任何其他没有冲突的哈希函数.