之前是没用过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())