业务需求:把接口传递的参数先排序并MD5加密 生成一个验签字符串
系统会为每个接入的应用系统提供一个唯一的key, 应用系统需要使用这个key和有效的access_token用于生成加密的验签, 接口参数加密方式详细定义如下:
第一步: 设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA(access_token作为其中的一个参数参与验签计算)。
特别注意以下重要规则:
参数名ASCII码从小到大排序(字典序);
如果参数的值为空不参与签名;
版本号参数不参与验签;
参数名区分大小写;
传送的sign参数不参与签名,将生成的签名与该sign值作校验。
接口可能增加字段,验证签名时必须支持增加的扩展字段
第二步: 在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
例如 signValue="flag=1&isWaitDeal=2&pageNo=1&pageSize=10"
以下为整理好的工具类:
导包:
#define CC_MD5_DIGEST_LENGTH 16
#import <CommonCrypto/CommonCrypto.h>