接口参数签名验证

与第三方对接时,会存在请求参数是否被篡改的问题,这时,我们就得进行接口签名验证,防止请求参数被篡改进而影响请求结果。

参数签名算法:

1、请求参数名的字母按照升序进行非空排列,使用URL键值对的格式(key1=value1&key=value2...),拼接成字符串stringA;

如:请求参数{alterFld=null,reqTm=29, characterSet=00, onStationId=262019},排列之后stringA={characterSet=00&onStationId=262019&reqTm=29}

2、遍历stringA,将所有值拼接成stringB。

   如:stringB=0026201929

3、stringB最后拼接上Secretkey得到stringC,将stringC进行md5运算,并将得到的字符串所以的字母转换成大写,得到sign值。

如:sign=DigestUtils.md5Hex(StringUtils.getBytesUnchecked(stringB.toString() + md5Key, "GBK")).toUpperCase()) .toString()

4、最后stringA拼接上sign键值对,就是发送的请求参数了。

如:requrstString={characterSet=00&onStationId=262019&reqTm=29&sign=A88G9CFF}

对方接到请求参数之后,除去sign的键值对,也做同样的算法加密。最后将得到的sign值和请求的sign值进行对比,如果两值相等表示请求参数没有被篡改,如果值不同就表示请求参数被篡改过了。

实例:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值