【发布时间】:2012-08-17 13:48:04
【问题描述】:
这是理论上的问题,但我很好奇。如果我这样做(PHP 中的代码,但在这种情况下语言并不重要)怎么办:
$value = ''; //starting value
$repeat = false;
while(true)
{
$value = md5($value);
/*Save values in database, one row per value*/
/*Check for repeated hash value in db, and set $repeat flag true if there is one*/
if($repeat)break;
}
如您所见,我怀疑会有重复的哈希值。我认为不可能每个现有文本都有自己的值,因为这应该意味着每个哈希值都有自己的值,这是没有意义的。
我的问题是:有没有关于这个“问题”的文章?例如,当我对文件进行哈希处理以检查它们是否有效时,我可能会在一个系统中获得相同的值?这会在任何系统的任何地方引起问题吗?
【问题讨论】:
-
md5 由于碰撞和速度而完全损坏。至少如果您将它用于密码散列或者您试图“保护”其他东西。
-
有点不清楚您要做什么。你为什么要在这样的链中散列?一方面你使用这个链,另一方面你谈论文件散列。这些是完全不同的场景。
-
@CodesInChaos 代码只是为了说明,关键是有碰撞的机会。文件散列也只是一个例子。我接受了一个真正回答了我想要的答案,而且上面的维基百科文章也很有帮助。
标签: php security hash md5 md5-file