iOS端加密传输对空格和加号的处理

一、“+”变空格的问题

在项目开发中,如果碰到“+”出现进行加密传输到服务器时,会出现+空格的问题,而在服务器端真正的加号会被转化为%2B

二、解决思路

假设现在对 NSString *encodString = @"测试 +你好";进行加密。

1、我们可以先对“空格”不进行处理。
2、使用stringByAddingPercentEncodingWithAllowedCharacters方法,对自定义的
"~?!@#$^&%+,:;='\"`<>()[]{}/\\|\n\r?!@#$^&%*+,:;='\"`<>()[]{}/\\|\n"

加密字符进行加密,这时是对用户真正输入的+进行加密,代码如下:

NSString * encodedStringResult = [encodString stringByAddingPercentEncodingWithAllowedCharacters:[[NSCharacterSet characterSetWithCharactersInString:@"?!@#$^&%*+,:;='\"`<>()[]{}/\\|\n"] invertedSet]];
3、再将加密之后的encodedStringResult进行空格符转化为+即可
encodedStringResult = [encodedStringResult stringByReplacingOccurrencesOfString:@" " withString:@"+"];

完整代码:

NSString *encodString = @"测试 +你好";
//先将+处理成%2B,对空格不进行处理
NSString * encodedStringResult = [encodString stringByAddingPercentEncodingWithAllowedCharacters:[[NSCharacterSet characterSetWithCharactersInString:@"~?!@#$^&%+,:;='\"`<>()[]{}/\\|\n\r"] invertedSet]];
//再将空格处理成+
encodedStringResult = [encodedStringResult stringByReplacingOccurrencesOfString:@" " withString:@"+"];

注意,在此问题解决方法中千万不要使用CFURLCreateStringByAddingPercentEscapes进行加密操作,因为CFURLCreateStringByAddingPercentEscapes内部直接将空格转化为了%20,并且这个方法在iOS9之后已经废弃使用了!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 6,372评论 0 10
  • 1.数据安全 01数据安全的原则1)在网络上"不允许"传输用户隐私数据的"明文"2.)在本地"不允许"保存用户隐私...
    小枫123阅读 650评论 0 1
  • 小确幸: 1.❤️5.16顺产健康宝贝,7.6斤,没打无痛,婷婷真棒!感恩超级给力的小小杨!感恩老公的陪伴,我们可...
    UP能量婷阅读 663评论 3 6
  • [饮食] 早餐:黄瓜柠檬汁一杯。半小时后大黄瓜一根,紫薯酸奶一份。 加餐:腰果六颗。 午餐:学校食堂的蒸卤面一份,...
    看世界的小蜗牛阅读 318评论 0 0
  • 玉指纤纤碧水柔,荧光灿灿难遮羞。 偷得劲柏三分魄,借取清湖几缕秋。 袅袅轻烟拂邃谷,盈盈粉黛醉丹丘。 惊鸿丽影随风...
    石门宝叔阅读 1,693评论 2 3

友情链接更多精彩内容