最近新集成了微信、支付寶、銀聯(lián)的二維碼主掃和被掃收款,總結(jié)一下用到的知識(shí)點(diǎn):
1.TLV 57域解析 ?:
源碼參考 :鏈接 密碼:uox7
原文:https://blog.csdn.net/linux_zkf/article/details/17078325
2.數(shù)組ASCII排序:
為了安全起見(jiàn),傳給后臺(tái)的參數(shù)需要加簽驗(yàn)簽,同時(shí)約定了加簽時(shí)傳輸參數(shù)的順序,采用ASCII排序:
? ? NSArray* keyArray = [params allKeys];//遍歷出來(lái)所有的key值
? ? NSStringCompareOptions comparisonOptions=NSCaseInsensitiveSearch|NSNumericSearch|
? ? NSWidthInsensitiveSearch|NSForcedOrderingSearch;
? ? NSComparatorsort = ^(NSString*obj1,NSString*obj2){
? ? ? ? NSRangerange =NSMakeRange(0,obj1.length);
? ? ? ? return[obj1compare:obj2options:comparisonOptionsrange:range]; };
//resultArray即重新排序好的數(shù)組
? ? NSArray *resultArray = [keyArraysortedArrayUsingComparator:sort];
3.RSA加簽:
因?yàn)橐郧白鲰?xiàng)目用過(guò)RSA加密,所以覺(jué)得這里應(yīng)該很簡(jiǎn)單,事實(shí)證明我有點(diǎn)先入為主了,首先加簽和加密就完全不是一個(gè)概念,其次之前的私鑰是明文寫(xiě)在代碼里的,這次的需求是后臺(tái)給定一個(gè)pfx格式的文件自行讀取私鑰進(jìn)行加簽,最后需要注意的是加簽的方式,我們項(xiàng)目采用的是SHA256,這里主要參考了http://www.itdecent.cn/p/67aeca97f25d,解決了我的大問(wèn)題,感謝。
源碼參考 :鏈接 密碼:enaf