【问题标题】:I get the SAME output for the md5 hash, but the base64_encode result is not the same [closed]我得到了 md5 哈希的相同输出,但 base64_encode 结果不一样[关闭]
【发布时间】:2012-10-19 05:47:39
【问题描述】:

我正在尝试将我的网站连接到需要某个验证密钥的支付网站,该验证密钥首先经过 md5 散列,然后是 base64 编码。所以指令pdf给出了一个给定输入字符串的例子:

input EX123123456100.00
md5(input) => 231cd7f8e0151f6e0c4a60b33752a1e7
base64_encode(md5(input)) => IxzX+0AVH24MSmCzN1Kh5w==

所以当我尝试这个示例输入时,我得到了 md5 哈希的 SAME 输出。但base64_encode 结果不一样。说明说base64_encode 需要以十六进制格式编码一个值才能工作。而且我猜我的 php 脚本中的 base64_encode 正在编码一个字符串,这就是为什么我从 pdf 文件中得到不同结果的原因。那么如何让base64_encode 编码一个十六进制值呢?还是有其他原因让我获得了不同的价值?

【问题讨论】:

  • MD5 不保证是唯一的。但是 base64 是。
  • @RobertHarvey md5 结果是一样的,所以如果你将 SAME 输入传递给 base64,那么我们应该再次得到相同的结果,对吧?
  • 如果你得到的 base64 输出结果不同,这意味着你传入了不同的输入。
  • @RobertHarvey 示例中的输入和我的输入是 EXACT 相同的,md5 也是相同的,但是 base64 不同。我很迷茫,为什么会这样
  • 你错过了一些东西。看上面的代码,我会说你认为你的 MD5 是一样的,但实际上不是。

标签: php encryption base64 md5 encode


【解决方案1】:

base64 编码已经是非常好的 ASCII 字符串的东西没有多大意义。如果您将true 作为第二个参数传递给md5,它将返回原始二进制数据而不是十六进制字符串。 Base64 编码 为您提供正确的示例值:

base64_encode(md5($key, true))

要么您误解了说明,要么说明具有误导性。

【讨论】:

  • 做到了,完美。非常感谢
猜你喜欢
  • 2017-01-24
  • 2021-05-04
  • 2013-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
  • 1970-01-01
相关资源
最近更新 更多