php 的对应处理java的Base64.encodeBase64String(DigestUtils.md5Hex(params+appkey+timestamp).getBytes());

之前是没用过java的,由于要对接一个java提供的接口,接口示例是这么写的Base64.encodeBase64String(DigestUtils.md5Hex(params+appkey+timestamp).getBytes())

看一下,应该就是将参数可key进行md5加密,然后在去byte数组,然后将这个数组进行base64加密。

但是php的方法跟java是不一样的,无奈我想到的是按照对应方法模仿出来。写个方法然后将数组md5加密,然后获取byte数组,在用数组序列化,然后转base64.当然,结果显然,出问题了。

我找了个java跟我用相同的参数跟我匹配了一下,到byte数组的时候,数组都还是一样的。问题就处在了base64转码。于是我跑过去查看java的Base64.encodeBase64String方法,发现想仿照着写一个方法出来是个非常困难的事。

非常蒙蔽的查了很多资料,都没有对应的解法。直到我发现,我找错方向了。

php的base64_encode(md5($finalStr) 对应java的Base64.encodeBase64String(DigestUtils.md5Hex(params+appkey+timestamp).getBytes())

java没有直接获取base64的方法,所以是先获取byte数组,然后通过自己封装的方法转回来。但是php是有的。也就是没有必要获取byte数组这一步。

不走过不知道啊。

      php的 base64_encode(md5($finalStr) 等同与java的java的Base64.encodeBase64String(DigestUtils.md5Hex(params+appkey+timestamp).getBytes())
  

随机浏览