IOS-网络(数据安全:MD5加密)
1 // 2 // ViewController.m 3 // IOS_0129_HTTP请求 4 // 5 // Created by ma c on 16/1/29. 6 // Copyright © 2016年 博文科技. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 #import "MBProgressHUD+MJ.h" 11 #import "NSString+Hash.h" 12 13 @interface ViewController () 14 @property (weak, nonatomic) IBOutlet UITextField *textName; 15 @property (weak, nonatomic) IBOutlet UITextField *textPassword; 16 17 - (IBAction)btnlogin; 18 19 @end 20 21 @implementation ViewController 22 23 /* 24 25 网络安全 26 1.常见加密算法 27 MD5\SHA\DES\3DES\RC2和RC4\RSA\IDEA\DSA\AES 28 2.加密算法的选择 29 一般公司都有自己的加密方案,按照公司的接口文档的规定去加密 30 3.MD5 31 1>全称:“Message Digest Algorithem5”,译为“消息摘要算法第五版” 32 2>效果:对输入信息生成唯一的128位散列值(32个字符) 33 3>特点: 34 a.输入两个不同的明文不会得到两个相同的输出值 35 b.根据输出值,不会得到原始的明文,即其过程不可逆 36 4>应用 37 a.MD5加密算法有较好的安全性,而且免费,因此该加密算法被广泛应用 38 b.主要运用在数字签名、文件完整性验证以及口令加密等方面 39 5>MD5解密网站:http://www.cmd5.com 40 41 2.网络数据加密 42 1>加密对象:隐私数据,比如密码,银行信息 43 2>加密方案 44 a.提交隐私数据必须用POST请求 45 b.使用加密算法对隐私数据进行加密,比如MD5 46 3>加密增强:加大破解难度 47 a.对明文进行两个MD5加密:MD5(MD5($pass)) 48 b.先对明文进行撒盐,在进行MD5加密:MD5($pass.$salt) 49 50 3.本地存储加密 51 1>加密对象:重要数据,比如单击游戏数据 52 53 4.代码安全问题 54 1>现在已经有工具和技术能反编译出源代码:逆向工程 55 2>问题:现在反编译出来的都是C语言代码,可读性不高 56 3>优点:最起码能知道源代码里面用的是那些框架 ->指导我们开发不了解的软件 57 4>解决方案:混淆代码 58 59 */ 60 61 - (void)viewDidLoad { 62 [super viewDidLoad]; 63 64 self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]; 65 } 66 67 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 68 { 69 [self.view endEditing:YES]; 70 } 71 72 - (IBAction)btnlogin { 73 74 NSString *usernameText = self.textName.text; 75 if (usernameText.length == 0) { 76 [MBProgressHUD showError:@"请输入账号"]; 77 return; 78 } 79 80 self.textPassword.secureTextEntry = YES; 81 NSString *password = self.textPassword.text; 82 if (password.length == 0) { 83 [MBProgressHUD showError:@"请输入密码"]; 84 return; 85 } 86 // 增加蒙板 87 [MBProgressHUD showMessage:@"正在拼命加载..."]; 88 89 //2.POST请求 90 NSString *strURL = @"http://localhost:8080/MJServer/login"; 91 NSURL *url = [NSURL URLWithString:strURL]; 92 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 93 94 //5s后请求超时(默认60s超时) 95 request.timeoutInterval = 5; 96 //设置请求方式 97 request.HTTPMethod = @"POST"; 98 //设置请求头 99 [request setValue:@"iPhone6" forHTTPHeaderField:@"User-Agent"]; 100 //对密码进行加密 101 password = [self doubleMD5:password]; 102 password = [self MD5Salt:password]; 103 password = [self MD5Reorder:password]; 104 //设置请求体 105 NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@",usernameText,password]; 106 //NSString -> NSData 107 request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding]; 108 109 //异步请求 110 [self sendAsyncWithRequest:request]; 111 112 } 113 //异步请求 114 - (void)sendAsyncWithRequest:(NSURLRequest *)request 115 { 116 NSOperationQueue *queue = [NSOperationQueue mainQueue]; 117 118 [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { 119 120 //隐藏蒙版 121 [MBProgressHUD hideHUD]; 122 NSHTTPURLResponse *resp = (NSHTTPURLResponse *)response; 123 NSString *msg = [NSHTTPURLResponse localizedStringForStatusCode:resp.statusCode]; 124 NSLog(@"%ld %@ %@",resp.statusCode, msg, resp.allHeaderFields); 125 126 //这个block会在请求完毕的时候自动调用 127 if (connectionError || data == nil) { 128 [MBProgressHUD showError:@"请求失败"]; 129 return; 130 } 131 //解析服务器返回的JSON数据 132 NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil]; 133 NSString *error = dict[@"error"]; 134 if (error) { 135 [MBProgressHUD showError:error]; 136 } 137 else{ 138 NSString *success = dict[@"success"]; 139 [MBProgressHUD showSuccess:success]; 140 } 141 }]; 142 } 143 144 ///两次加密 145 - (NSString *)doubleMD5:(NSString *)text 146 { 147 return [[text md5String] md5String]; 148 } 149 150 ///先撒盐,在进行MD5加密 151 - (NSString *)MD5Salt:(NSString *)text 152 { 153 NSString *salt = [text stringByAppendingString:@"abc"]; 154 return [salt md5String]; 155 } 156 ///先加密,后乱序 157 - (NSString *)MD5Reorder:(NSString *)text 158 { 159 //加密 160 NSString *pwd = [text md5String]; 161 162 NSString *prefix = [pwd substringFromIndex:2]; 163 NSString *subfix = [pwd substringToIndex:2]; 164 165 //乱序 166 NSString *result = [prefix stringByAppendingString:subfix]; 167 168 return result; 169 } 170 171 @end
IOS-网络(数据安全:MD5加密)相关推荐
- IOS开发之MD5加密和钥匙串的使用-oc
IOS开发之MD5加密和钥匙串的使用-oc 源码在我的主页,md5加密是用户登录安全的一个保障.不可逆的,可以暴力破解的. // // ViewController.m // MD5演练 // // ...
- ios android md5加密,iOS中使用MD5加密
在iOS中使用MD5加密较简单,需要引入头文件CommonCrypto/CommonDigest.h,我们单独新建一个用于MD5加密的类Encryption,此类继承NSObject. Encrypt ...
- iOS 加密算法之MD5加密使用
2020.06.04编辑 前言 对于加密算法这个概念我的确不太清楚,虽然我知道加密算法存在的意义,但是这并不妨碍我不知道加密算法具体都有哪些.所以今天这篇文章就是了大家一起学习开发中哪些加密算法. 在 ...
- IOS(objective-c)实现md5加密(32位小写)的工具类
我们编程中,md5加密是个经常会用到的功能.下面是我封装好的一个实现字符串md5加密的工具类. MD5Util.h #import <Foundation/Foundation.h>@in ...
- iOS简单MD5加密
iOS简单的MD5加密 1.引入头文件 #import <CommonCrypto/CommonDigest.h> 2.在controller中写一个加密方法,使用的时候调用 #pragm ...
- iOS经常使用加密方式(MD5,AES,BASE64)与网络数据安全
演示样例项目下载地址 https://github.com/cerastes/Encryption 1MD5 创建MD5类 #import <Foundation/Foundation.h&g ...
- iOS 网络传输数据安全以及常用的加密算法使用
我们常说的数据安全:主要分为两种,数据本身的安全和数据防护安全. 数据本身的安全包括数据保密,数据完整性验证,数据双向认证等. 数据防护安全包括磁盘阵列,数据备份,异地容灾等. App安全问题主要包括 ...
- 微信小程序------MD5加密(支持中文和不支持中文)和网络请求(get和post)
2019独角兽企业重金招聘Python工程师标准>>> 开发中常常遇到MD5加密,最近做小程序也用到了,简单总结了一下: 这要有两个加密文件,一个不支持中文,一个支持,所以你选择支持 ...
- md5 ios java代码_IOS端與Java端MD5加密方法
關於NSString的MD5加密,這不難,在網上可以搜到很多算法,主要是跟后台的統一會出問題,對同一段字符串,ios和java加密后的結果可能不一樣,很坑爹.現在貼一下ios端和后台java的代碼. ...
最新文章
- 《软件测试经验与教训》之二——测试内容先后顺序
- 我想知道怎么求N的N次方
- python波士顿房价是什么数据,Python数据分析 | 波士顿房价回归分析
- Arcgis for android 100.4 getFieldType ()
- 基于SSM的猫头鹰在线视频网站
- Dev c++6.0下载
- OPNET中使用外部文件
- Micrium uC-Probe STM32调试工具 ucosIIucosIII
- 智课雅思词汇---九、mon是什么意思
- RxJava模式与原理-----标准观察者与RxJava观察者
- 「BJOI 2019」排兵布阵
- 5G NR MCG,SCG,PCell,PSCell,SCell,sPCell 概念
- 基于SpringBoot的社区综合治理系统设计与实现
- 投影仪哪些比较好?投影仪如何选购
- 【Axure10基础教程】第七章 设置文本
- 最详细的Java入门完整教程,学Java先收藏了
- 每日一学—text-decoration 属性
- 响铃:聚焦图片版权,百度区块链产品“图腾”如何打好这副牌
- call()、apply()、bind()的区别
- glc四驱软件测试,【图】独家官方答复 奔驰GLC四驱情况新进展_汽车之家