iOS网络请求整个参数(字典)AES加密
2017-08-25 本文已影响403人
WSKing的杂货铺
由于之前的项目中手机短信各种被刷,所以后台决定将数据请求以及返回的数据加密,本来以为只是将参数的value加密,结果后台为了自己方便,要把整个参数体加密,所以,原本封装的AFN就没办法用了,很尴尬,所以决定自己重新封装咯.
首先封装AES加密
我采用的是AES128,kCCOptionPKCS7Padding.网上也很多相关的例子,不多做介绍.
然后我又将AES又进行了一次封装:先base64加密,然后AES加密.当然解密反过啦就行了!
后面我会将demo贴出来,直接看代码更清楚.
然后是数据请求封装
数据请求使用的是post请求,原生的NSURLSession封装.参数加密的过程无非是:1,参数字典转NSData;2,data转字符串;3字符串进行加密;4,设置为HTTPBody
请求成功之后:jsonData转字符串,字符串解密,jsonStr转字典,返回!
当然:还有上传图片加密,也是一大难题,后来解决了.
图片作为参数加密上传图片:将图片转成base64字符串[一定不要忘记在前面拼接这一段字符串:data:image/jpeg;base64](你的图片是什么格式的就将jpeg改为什么格式),作为参数的value!后面就是数据请求的参数加密和返回解密了,跟上面的一样!
但是由于图片转base64的字符串会超级超级大,所以我先将图片裁小,然后再又压缩(不然传个参数都不知道要多久),然后就是讲一些特殊字符替换(这个是跟后台统一,看后台要怎么搞吧)