在我的程序中,我使用Java程序中的Ftp將文件加載到我的服務器,然後比較MD5和。MD5在PHP和JAVA中給出了不同的結果
上傳工作正常,我得到相同的MD5總和。但是php版本在相同的md5-sum之前有一個「0」。這是爲什麼?
Php: 0e9e9399840d9a9368b53d3df98a6a2f
Java: e9e9399840d9a9368b53d3df98a6a2f
在我的程序中,我使用Java程序中的Ftp將文件加載到我的服務器,然後比較MD5和。MD5在PHP和JAVA中給出了不同的結果
上傳工作正常,我得到相同的MD5總和。但是php版本在相同的md5-sum之前有一個「0」。這是爲什麼?
Php: 0e9e9399840d9a9368b53d3df98a6a2f
Java: e9e9399840d9a9368b53d3df98a6a2f
它們是一樣的,它只是在前面加了一個0來填充值,所以它總是16個字符。
把散列看作十六進制的數字 - 它可以被填充,因此總是有相同的數字位數(因爲它永遠不會超過16位數),但它不一定是。這有點像比較209
和0209
。
這兩個刺只是兩個128位數的十六進制表示。我認爲區別在於從字節數組到字符串的轉換。但兩個*數值*值都是相同的(所以'0e'等於十六進制表示中的'e';二進制表示中的'1110')。 – Tom 2013-02-20 13:42:22