[英]Why is the same input returning two different MD5 hashes?
好吧,我有兩個文件。 他們是完全相同的。
第一個文件是: http://iadsonline.com/servconfig.php
: http://iadsonline.com/servconfig.php
第二個文件是: http://xzerox.info/servconfig.php
: http://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.