我正在尝试将我的网站连接到一个支付网站,该网站需要某个验证密钥,该密钥首先是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
编码为十六进制值?或者我有另一个原因得到不同的价值吗?
答案 0 :(得分:3)
base64编码已经是一个非常好的ASCII字符串的东西没有多大意义。如果将true
作为第二个参数传递给md5
,它将返回原始二进制数据而不是十六进制字符串。 Base64编码 为您提供了正确的示例值:
base64_encode(md5($key, true))
要么您误解了说明,要么误解了说明。