MD5在PHP和JAVA中给出了不同的结果

问题描述:

在我的程序中,我使用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

它们是一样的,它只是在前面加了一个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