2010-05-10 83 views
4

好的,我有两个文件。他们是完全相同的。为什么相同的输入返回两个不同的MD5散列?

第一个文件是: http://iadsonline.com/servconfig.php

第二个文件是: http://xzerox.info/servconfig.php

然而,当我使用md5_file(),以获得他们的MD5,他们返回两个不同的MD5的。

第一次返回cc7819055cde3194bb3b136bad5cf58d,这是不正确的,第二次返回96a0cec80eb773687ca28840ecc67ca1,这是正确的。

的文件只是一个 

为了验证,我用这个代码:

$contents = file_get_contents($URL); 
echo htmlentities($contents); 

而且他们都返回 

那么为什么他们散列不同?

+2

明显的答案是因为它们不同。看到换行符的答案。 – 2010-05-10 01:17:07

回答

7

第二个以换行符结束,第一个不结束。

3

curl尝试,我看到的第一个是 而不后一个新行,第二个是 后换行。所以当然他们会有不同的哈希值。事实上,即使在命令行(bash提示符):

$ md5 sc.dat 
MD5 (sc.dat) = cc7819055cde3194bb3b136bad5cf58d 
$ md5 zz.dat 
MD5 (zz.dat) = 96a0cec80eb773687ca28840ecc67ca1 
+1

您也可以运行'echo“ ”| md5sum'与'echo -n“ ”| md5sum' – 2010-05-10 01:11:33

0

你可以在任何一个文件中有空白吗?在文本编辑器中打开它们并显示所有字符

或者,运行像这样

echo str_replace(array("\n", "\t", "\r"), '[I AM HIDING!]', file_get_contents($URL)); 

如果你看到[I AM藏身!],你就知道该怎么做:)

0

这也发生在我身边。我将相同的编码(没有BOM的utf-8)设置为存储和检索散列字符串的所有文件:)现在md5()给出相同的结果:)

相关问题