最近遇到一个开放接口,需要用秘钥把3个参数加密后传递,找了很多AES加密的文件放到我这里虽说能调通,但是得到的值确实不匹配的,所以如果公司用了AES加密的话最好问下研发要AES加密的文件,避免像我一样浪费很多时间
一、开发文档展示信息:
1. 请求方式 / 提交格式:post / json ,无body
2. 请求头:
名称 |
值 |
ur-appkey |
企业appKey,系统中已给出 |
ur-sign |
请求包体的MD5值,若包体为空则填写随机字符串 |
ur-cuitime |
当前时间戳,单位s |
ur-checksum |
用AppSecret(系统中已给出) 通过AES加密“appkey+sign+curtime”的值 |
Content-Type |
application/json |
二、初步想法
1. 因为请求头信息每个openapi接口都需要使用,所以将他封装为公用部分方法:
2. AES加密"appkey+sigin+curtime" 3个字段
3. 请求body不为空需要md5加密body
三、处理请求头
1、 AES加密
public static String encode(String content, String key) {
if (content == null || content.length() < 1) {
return null;
}
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom random=