簡體   English   中英

為什么相同的輸入返回兩個不同的MD5哈希值?

[英]Why is the same input returning two different MD5 hashes?

好吧,我有兩個文件。 他們是完全相同的。

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

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

但是,當我使用md5_file()來獲取他們的MD5時,他們會返回兩個不同的MD5。

第一個返回cc7819055cde3194bb3b136bad5cf58d ,這是不正確的,第二個返回96a0cec80eb773687ca28840ecc67ca1 ,這是正確的。

該文件只是一個 

為了驗證,我使用了這段代碼:

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

他們都返回 

那么為什么它們以不同的方式散列呢?

第二個以換行符結束,第一個不換行。

嘗試curl ,我看到第一個是  在沒有換行后,第二個是  后一個換行符。 所以他們當然會以不同的方式散列。 事實上,即使在命令行(bash提示符):

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

這也發生在我身上。 我將相同的編碼(utf-8沒有BOM)設置為存儲和檢索散列字符串的所有文件:)現在md5()給出了相同的結果:)

你能在這兩個文件中都有空格嗎? 在文本編輯器中打開它們並顯示所有字符

或者,運行這樣的東西

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

如果你看到[我在討厭!] ,你會知道怎么做:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM