如果有人故意将两个文件修改为具有相同的哈希值,那么有什么方法可以阻止它们? md5和sha1可以阻止大多数情况吗?
我当时想写自己的东西,即使用户不知道我的哈希值,即使我做得不好,他也可能无法欺骗我。
预防这种情况的最佳方法是什么?
最佳答案
如果主要考虑哈希冲突,则通常认为MD5不安全。同样,SHA1也不再被美国政府接受。正在使用competition来寻找替代哈希算法,但目前的建议是使用SHA2系列-SHA-256,SHA-384或SHA-512。 [更新:2012年10月2日NIST选择SHA-3作为算法Keccak。]
您可以尝试创建自己的哈希-它可能不如MD5好,同样不建议使用“通过隐蔽性进行安全保护”。
如果需要安全性,请使用多种哈希算法进行哈希处理。过度不可能使用多种算法同时创建具有哈希冲突的文件。 [[根据评论,让我说清楚:我的意思是同时发布文件的SHA-256和Whirlpool值-不是结合使用哈希算法来创建单个值,而是使用单独的算法来创建单独的值。通常,损坏的文件将无法匹配任何算法。 [例如,如果某人设法使用一种算法创建了碰撞值,那么在另一种算法中也产生第二次碰撞的机会就可以忽略不计。]
Public TimeStamp使用一系列算法。例如,请参见sqlcmd-86.00.tgz。