最近新集成了微信、支付宝、银联的二维码主扫和被扫收款,总结一下用到的知识点:
1.TLV 57域解析 :
源码参考 :链接 密码:uox7
原文:https://blog.csdn.net/linux_zkf/article/details/17078325
2.数组ASCII排序:
为了安全起见,传给后台的参数需要加签验签,同时约定了加签时传输参数的顺序,采用ASCII排序:
NSArray* keyArray = [params allKeys];//遍历出来所有的key值
NSStringCompareOptions comparisonOptions=NSCaseInsensitiveSearch|NSNumericSearch|
NSWidthInsensitiveSearch|NSForcedOrderingSearch;
NSComparatorsort = ^(NSString*obj1,NSString*obj2){
NSRangerange =NSMakeRange(0,obj1.length);
return[obj1compare:obj2options:comparisonOptionsrange:range]; };
//resultArray即重新排序好的数组
NSArray *resultArray = [keyArraysortedArrayUsingComparator:sort];
3.RSA加签:
因为以前做项目用过RSA加密,所以觉得这里应该很简单,事实证明我有点先入为主了,首先加签和加密就完全不是一个概念,其次之前的私钥是明文写在代码里的,这次的需求是后台给定一个pfx格式的文件自行读取私钥进行加签,最后需要注意的是加签的方式,我们项目采用的是SHA256,这里主要参考了https://www.jianshu.com/p/67aeca97f25d,解决了我的大问题,感谢。
源码参考 :链接 密码:enaf