我已经获得了这个需要转换为PHP的示例java代码
JAVA
String rawStr = logistics_interface + signKey;
String data_digest = new String(Base64.encodeBase64(MD5Bytes(rawStr.getBytes("utf-8"))), "utf-8");
我一直在使用这个PHP:
$rawStr = $logistics_interface . $signKey;
$data_digest = base64_encode(md5(utf8_encode($rawStr)));
使用这些测试值:
$logistics_interface = '<order>helloworld</order>';
$signKey = '123';
我的PHP代码给出了:
ZWUwNGZmMWU2MTQ1NGRmOTcwN2U2ZmY3MmNlMjlkOTk=
但API供应商告诉我,$ data_digest的正确值应为:
7gT/HmFFTflwfm/3LOKdmQ==
答案 0 :(得分:2)
在Java中,MD5Bytes
返回MD5结果的普通字节,在PHP中,md5
函数返回字节的人类可读的十六进制表示,因此得到完全相同的结果在Java中,您需要首先使用hex2bin
$data_digest = base64_encode(hex2bin(md5($rawStr)));
应该给你完全相同的结果:Example