2013-02-20 100 views
1

在我的程序中,我使用Java程序中的Ftp將文件加載到我的服務器,然後比較MD5和。MD5在PHP和JAVA中給出了不同的結果

上傳工作正常,我得到相同的MD5總和。但是php版本在相同的md5-sum之前有一個「0」。這是爲什麼?

Php: 0e9e9399840d9a9368b53d3df98a6a2f 
Java: e9e9399840d9a9368b53d3df98a6a2f 
+1

這兩個刺只是兩個128位數的十六進制表示。我認爲區別在於從字節數組到字符串的轉換。但兩個*數值*值都是相同的(所以'0e'等於十六進制表示中的'e';二進制表示中的'1110')。 – Tom 2013-02-20 13:42:22

回答

4

它們是一樣的,它只是在前面加了一個0來填充值,所以它總是16個字符。

把散列看作十六進制的數字 - 它可以被填充,因此總是有相同的數字位數(因爲它永遠不會超過16位數),但它不一定是。這有點像比較2090209

+0

謝謝,那麼我可以削減這個'0',或者這總是一個重要的角色? – bbholzbb 2013-02-20 13:38:50

+0

謝謝。我總是比較md5的字符串 - 我將在未來比較爲十六進制數字 – meouw 2013-02-20 13:51:47

+0

就數據而言,您可以將其削減 - 如果您比較的是十六進制數字而不是字符串(您應該是這樣),這是多餘的。比較作爲字符串,那顯然很重要。 – berry120 2013-02-20 14:02:34

相關問題