2010-05-10 101 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()給出相同的結果:)

相關問題