我可以使用md5防止重复内容吗?

时间:2009-07-13 19:56:21

标签: md5 hash

我想防止重复内容。我不想保留内容的副本,所以我决定只保留md5签名。

我读到md5碰撞确实发生了,不同的内容可以提供相同的md5签名。

你觉得md5够了吗?

我应该一起使用md5和sh1吗?

8 个答案:

答案 0 :(得分:5)

人们已经能够在人为的情况下故意制造MD5碰撞,但是为了防止重复内容(在没有恶意用户的情况下),这已经绰绰有余了。

话虽如此,如果你可以使用SHA-1(或SHA-2),那么你将会从碰撞中获得更小的但更安全的。

答案 1 :(得分:3)

MD5应该没问题,碰撞非常罕见,但如果你真的很担心,你也可以使用sha-1。

虽然我认为签名确实不是那么大,但如果你有备用处理周期和磁盘空间,你可以做到这两点。但如果空间或速度有限,我只能选择其中一个。

答案 2 :(得分:2)

如果存在哈希冲突,为什么不简单地比较字节的内容字节?哈希冲突是非常罕见的,所以你只需要很少进行字节检查。这样,只有在项目实际重复时才会检测到重复项

答案 3 :(得分:1)

md5应该足够了。是的,可能会发生碰撞,但发生这种情况的可能性非常小,除非你真正追踪数十亿条内容,否则我不会担心它。

答案 4 :(得分:1)

如果您真的害怕意外碰撞,请同时执行MD5和SHA1哈希并进行比较。如果它们都匹配,则内容相同。如果其中任何一个不同,则内容不同。

答案 5 :(得分:1)

组合算法仅用于混淆,但不会增加散列算法的安全性。

MD5太破碎无法使用,恕我直言。研究人员证明了锻造MD5哈希,他们证明能够伪造产生MD5碰撞的内容,从而打开了生成伪造CSR的大门,从RapidSSL购买他们不拥有的域名的证书。 Security Now! episode 179 explains the process

对我来说,基于SHA的哈希更强大,大多数开发平台都支持它,所以选择很容易。剩下的决定因素是块大小。

答案 6 :(得分:0)

MD5坏了,SHA1接近它。使用SHA2。

修改

根据OP的更新,故意碰撞似乎并不是一个严重的问题。对于无意的,任何具有至少64位输出的合适散列都可以。

总的来说,我仍然会避免使用MD5甚至是SHA1,但是没有理由对它采取教条。如果工具适合这里,那么一定要使用它。

答案 7 :(得分:0)

时间戳+ md5一起足够安全。