隐私数据的处理
用户访问网络免不了将一些数据上传到服务器,
可能是一些图片,也有可能是账号密码,
如何将这些数据进行处理,才能保证安全?
仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题
可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据
因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交
常见的加密算法
MD5 \ SHA \ DES \ 3DES \ RC2和RC4 \ RSA \ IDEA \ DSA \ AES
加密算法的选择
一般公司都会有一套自己的加密方案,按照公司接口文档的规定去加密
一.利用算法加密(以MD5为例)
什么是MD5
全称是Message Digest Algorithm 5,译为“消息摘要算法第5版”
效果:对输入信息生成唯一的128位散列值(32个字符)
MD5的特点
输入两个不同的明文不会得到相同的输出值
根据输出值,不能得到原始的明文,即其过程不可逆
包含了苹果的原生库
#import <CommonCrypto/CommonDigest.h>
#import <CommonCrypto/CommonHMAC.h>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | - ( NSString *)md5String { const char *string = self .UTF8String; int length = ( int )strlen(string); unsigned char bytes[CC_MD5_DIGEST_LENGTH]; CC_MD5(string, length, bytes); return [ self stringFromBytes:bytes length:CC_MD5_DIGEST_LENGTH]; } - ( NSString *)stringFromBytes:(unsigned char *)bytes length:( int )length { NSMutableString *mutableString = @ "" .mutableCopy; for ( int i = 0; i < length; i++) [mutableString appendFormat:@ "%02x" , bytes[i]]; return [ NSString stringWithString:mutableString]; } |
二.使用https协议
在URL前加https://前缀表明使用SSL加密的,你的电脑与服务器之间收发的信息传输将更加安全
Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定
http和https使用的而是完全不同的连接方式,用的端口也不一样,前者是80,后者是443.
http的连接很简单,是无状态的
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议要比http协议安全
SSL(安全套接层)
1 2 3 4 5 6 7 8 9 10 11 12 13 | - ( void )viewDidLoad { [ super viewDidLoad]; //实现代理 NSURLSession *session = [ NSURLSession sessionWithConfiguration:[ NSURLSessionConfiguration defaultSessionConfiguration] delegate: self delegateQueue:[[ NSOperationQueue alloc] init]]; NSURLSessionDataTask *task = [session dataTaskWithURL:[ NSURL URLWithString:@ "https://www.apple.com/cn/" ] completionHandler:^( NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { NSLog (@ "%@" ,[[ NSString alloc] initWithData:data encoding: NSUTF8StringEncoding ]); }]; [task resume]; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #pragma mark - <NSURLSessionTaskDelegate> /** * challenge :挑战,质询 * completionHandler:通过调用这个block,来告诉URLSession要不要接收这个证书 * NSURLSessionAuthChallengeDisposition 如何处理这个安全证书 * NSURLCredential 安全证书 */ - ( void )URLSession:( NSURLSession *)session didReceiveChallenge:( NSURLAuthenticationChallenge *)challenge completionHandler:( void (^)( NSURLSessionAuthChallengeDisposition , NSURLCredential * _Nullable))completionHandler { //如果不是服务器信任类型得证书,直接返回 if (![challenge.protectionSpace.authenticationMethod isEqualToString: NSURLAuthenticationMethodServerTrust ]) { return ; } //根据服务器的信任信息创建证书对象 NSURLCredential *credential = [ NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; //保证不为空 if (completionHandler) { //利用这个block使用这个证书 completionHandler( NSURLSessionAuthChallengeUseCredential ,credential); } //这也是一种写法 // !completionHandler ? : completionHandler(NSURLSessionAuthChallengeUseCredential,challenge.proposedCredential); NSLog (@ "-----didReceiveChallenge" ); } |
AFNetworking框架等内部已经对https安全证书进行了验证,不需要我们做多余的判断。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 使用 Dify + LLM 构建精确任务处理应用