iOS app侧对请求参数进行签名:【请求参数按照ASCII码从小到大排序、拼接、加密】(递归的方式进行实现)

2021-03-08 10:36:15 浏览数 (1)

前言

元宵佳节

支付类app为了安全起见,除了使用【防代理分析请求数据】,还可采用签名的方式进一步进行限制防止请求和返回报文被修改。

iOS请求安全防护【1、 防代理分析请求数据 2、SSL证书认证3、采用签名禁止修改报文4、不在本地缓存网络请求报文5、利用NSURLProtocol 拦截请求修改HTTPHeaderField】文章地址:https://blog.csdn.net/z929118967/article/details/102511852

  • 应用场景:防止请求参数被恶意修改

在对接第三方支付的时候,第三方会要求参数按照ASCII码从小到大排序。

  • 原文

https://blog.csdn.net/z929118967/article/details/108195721

  • 参数
代码语言:javascript复制
    NSDictionary *params = @{@"sid" :  @"iOS逆向",
                             @"certificateInfoList" :  @"https://kunnan.blog.csdn.net/article/details/108195721" ,
                             @"storePicsList" : @"https://kunnan.blog.csdn.net" ,
                             };

  • 效果
代码语言:javascript复制

2021-02-26 15:43:42.208991 0800 SignatureGenerator[16231:1928569] 按照参数名ASCII码从小到大排序:《certificateInfoList=https://kunnan.blog.csdn.net/article/details/108195721&sid=iOS逆向&storePicsList=https://kunnan.blog.csdn.net》


2021-02-26 15:43:42.209280 0800 SignatureGenerator[16231:1928569] sign:195b9caecc41681ebd1b74261f858052

I、实现步骤

1.1 签名模式的前奏:按照参数名ASCII码从小到大排序并拼接[递归的方式进行实现]

设所有发送或者接收到的数据为集合M,将集合M内的参数和参数值按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。

代码语言:javascript复制
isPreAuth=false&isWipeZero=true&needTrade=falsetotalAmount=22

  • 处理key对应的Value是字典的情况

0 人点赞