【问题标题】:MD5 is giving different results in PHP & JAVAMD5 在 PHP 和 JAVA 中给出不同的结果
【发布时间】:2013-02-20 13:30:15
【问题描述】:

在我的程序中,我使用 Ftp 从 Java 程序中将文件加载到我的服务器,然后比较 MD5-sum。

上传工作正常,我得到相同的 md5 总和。但是 php-version 在相同的 md5-sum 之前有一个“0”。为什么会这样?

Php: 0e9e9399840d9a9368b53d3df98a6a2f
Java: e9e9399840d9a9368b53d3df98a6a2f

【问题讨论】:

  • 这两个字符串只是两个 128 位数字的十六进制表示。我认为区别在于从字节数组值到字符串的转换。但是两个 numeric 值是相同的(所以 0e 在十六进制表示中等于 e;在二进制表示中是 1110)。

标签: java php md5


【解决方案1】:

它们是一样的,只是 PHP 用一个额外的 0 在前面填充了这个值,所以它总是 16 个字符。

将哈希视为十六进制的数字 - 它可以被填充,因此它始终是相同的位数(因为它永远不会超过 16 位),但它并非必须如此。这有点像比较数字2090209

【讨论】:

  • 谢谢,那我可以删掉这个 '0' 或者这总是一个重要的字符?
  • 谢谢。我总是将 md5 比较为字符串 - 我以后会比较为十六进制数字
  • 就数据而言,你可以删减它——如果你比较的是十六进制数字而不是字符串(你应该是这样),那是多余的。如果你是作为字符串比较,那么它显然很重要。
猜你喜欢
  • 2016-05-13
  • 2014-05-28
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
相关资源
最近更新 更多