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