在iOS端使用RSA加密的记录
一、需求:
SDK开发,使用RSA加密和后台进行数据交互,后台是PHP
要求:
1、post请求,客户端放公钥,私钥放后台
2、发送数据:客户端的json数据—>RSA加密数据—>base64编码数据—>php后台
3、接收数据:php后台base64编码数据—>客户端base64解码数据—>RSA解密数据—>json数据
4、使用的密钥是1024位,要和后台统一,解密长度128,加密长度117
5、rsa_public_key.pem文件后台给的
二、探究过程
三、遇到的问题
1、'openssl/asn1.h' file not found‘
解决方法:
Header Search Paths 添加这种格式的路径
"$(SRCROOT)/XSFH_game/Lib"
image.png
2、base编码发给后台,后台接收少+的问题
我这边发给后台加密后的base64编码,后台接收后,base64编码中的+变成了空格,导致后台解码错误,这是后台的问题
解决方法:
PHP学习 base64_encode +号变空格
3、后台数据接收到问题
可能是php接收数据的问题,我放在HTTPBody里的传给它的是一字符串,后台说没法解析,要那种类似于json的格式,最后给它传了个如下格式的代码stringWithFormat:@"baseKey=%@",encryptedString]; ,baseKey可以随便写,就类似于json的key值
NSString *encryptedString = [[XSFHRSATool shareInstance] encryptStr:paramStr WithRSAKeyType:KeyTypePublic];
NSString *keyAndValue = [NSString stringWithFormat:@"baseKey=%@",encryptedString];
request.HTTPBody = [keyAndValue dataUsingEncoding:NSUTF8StringEncoding];