Java接口请求加密验签处理

 Java接口请求加密验签处理

最近做了一个接口的加密验签的功能,今天和大家分享一下
***注(以下出现的参数字符串都是测试处理,方便大家理清思路,非真实正确的数据)***

1、参数说明

  字段名称:appcode(产品编码)、servercode(业务编码)、redirect(业务跳转地址)、timestamp(时间)、addParas(附属参数)、sign(签名)。

2、sign签名计算规则
采用md5加密方法,参与计算的参数为上述的appcode、servercode、redirectURL、timestamp、addParas。

3、加密策略
秘钥:XA12#Da

3.1、所有参数组成字符串params
appcode=hsh&servercode=HSH_MMS,hsh10120013,HSH_05_MMS&redirectURL=hsh.12580.com×tamp=20200220112501&addParas={datasource:163__table}

3.2、将所有参数组成字符串按照字典序排序形成sortParams(即字符串string1)
Map sortParams = new TreeMap(params);
addParas={datasource:163__table}&appcode=hsh&redirectURL=hsh.12580.com&servercode=HSH_MMS,hsh10120013,HSH_05_MMS×tamp=20200220112501

3.3、将上述字符串(string1) + 秘钥生成新的字符串(即string2)
addParas={datasource:163__table}&appcode=hsh&redirectURL=hsh.12580.com&servercode=HSH_MMS,hsh10120013,HSH_05_MMS×tamp=20200220112501&appkey=XA89aD#a

3.4、将string2进行md5生成sign签名
md5(string2)

4、组合参数

4.1、将上述MD5计算的sign值和所有参数addParas、appcode、redirectURL、servicecode、timestamp组合成字符串
"addParas={\"datasource\":\"163__table\"}&appcode=hsh&redirectURL=hsh.12580.com&servercode=HSH_MMS,hsh10120013,HSH_05_MMS×tamp=20200220112501&sign=4bb716352db6400bc1c8ec9f01424ee0"

4.2、将上述字符串使用base64Util进行加密得到密文然后传输
YWRkUGFyYXM9eyJkYXRhc291cmNlIjoiMTYzX190YWJsZSJ9JmFwcGNvZGU9aHNoJmlmU3Vic2NyaWJlPTEmcmVkaXJlY3RVUkw9aHNoLjEyNTgwLmNvbSZzZXJ2ZXJjb2RlPUhTSF9NTVMsaHNoMTAxMjAwMTMsSFNIXzA1X01NUyZ0aW1lc3RhbXA9MjAyMDAyMjAxMTI1MDEmc2lnbj00YmI3MTYzNTJkYjY0MDBiYzFjOGVjOWYwMTQyNGVlMA==

5、接收方处理

1、现将url后面的加密参数进行base64解密处理

2、解密处理后得到所有的参数(appcode、servercode、redirectURL、timestamp、addParas、sign)

3、将参数(appcode、servercode、redirectURL、timestamp、addParas)进行上述第三步的加密处理生成新的sign值

4、校验解密后sign值和获取参数生成的新sign值做出判断是否相等

 

你可能感兴趣的:(java)