项目中访问的是第三方易宝支付,客户端需要用户查询绑定的银行卡并解除绑定,因此需要直接请求易宝支付的java接口,在此过程中遇到漏洞并进行记录。
接口的说明如下。
有关引用接口文档的逻辑,请参见最后的java代码。 看了半天,终于整理了逻辑:
1 .商户编号和标识必须hmac拼接,hmac中有一层加密
应传递的参数与字符串相连,进行md5密钥加密,分配给hmac参数。
重点:不能简单地进行md5加密。 需要钥匙。
对客户编号、用户号、hmac三个参数进行AES加密操作;
通过将三个参数从词典转换为json字符串的形式,对密钥(取密钥的前16位)进行AES加密。
重点:
1 )在网上搜索到的AES加密,算法类型为kccoptionpkcs 7填充,但java接口的算法类型为ECB,这个错误不太容易发现,如果加密错误,可以回包
2 )后台所需的Data数据为十六进制,但经过AES加密后的NSData数据通常进行Base64转换。 在这种情况下,必须取消Base64转换并将NSData转换直接转换为十六进制数据。
是设置数据和客户编号并参加。
4 .界面需要的参数很简单,所以写起来并不复杂。 主要是加密没有问题,传递参数没有问题。
备注:易宝支付的接口文档末尾附有java代码。 附上下图。