【发布时间】: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