【iOS】MD5数据加密和网络安全
- (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];
}
做到。即使数据被劫持。也无法还原出原始数据的地步。
- (IBAction)login:(UIButton *)sender {
[self postLogin];
}
/**提交用户数据的时候用post相对安全. 同一时候将用户数据转换成模型最好*/
- (void)postLogin {
//1.URL
NSString *urlStr = [NSString stringWithFormat:@"http://localhost/login.php"];
NSURL *url = [NSURL URLWithString:urlStr];
//2.建立 Mutablerequest
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//3.设置
request.HTTPMethod = @"POST";
//请求体可在firebug中找
NSString *pwd = self.userPwd.text;
//先加盐, 用MD5加密. (server简单存储加盐与加密保存过的即可了). 现实中的情况有公钥/私钥, server并非简单存储密码.
pwd = [pwd stringByAppendingString:token];
pwd = [pwd md5String];
NSLog(@"%@", pwd);
NSString *body = [NSString stringWithFormat:@"username=%@&password=%@", self.userName.text, pwd];
request.HTTPBody = [body dataUsingEncoding:NSUTF8StringEncoding];
//4.建立连接. (data即为取到的数据, 和get一样)
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler: ^(NSURLResponse *response, NSData *data, NSError *connectionError) {
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@, %@", [NSThread currentThread], str);
//更新显示须要在主线程中
[[NSOperationQueue mainQueue] addOperationWithBlock: ^{
self.label.text = str;
NSLog(@"%@, %@", [NSThread currentThread], str);
}];
}];
}
二、更加高级的方法
- (IBAction)login:(id)sender
{
NSString *pwd = self.pwdText.text;
// 进行MD5加密
pwd = [pwd stringByAppendingString:token];
// 每次都是一样的! 比如:黑客拦截了路由器中的数据
// 就行获得到加密后的password! pwd = [pwd md5String]; // 在server后台,保存的是用私有密钥加盐处理的MD5password串
pwd = [NSString stringWithFormat:@"%@%@%@", pwd, publicKey, @"2014062914:14:30"];
// 利用日期,可以保证加密生成的字符串不一样
pwd = [pwd md5String]; // 提交给server的内容:新的password,生成password的事件、
/**
server的处理: 1. 从server取出用户的password(是用私有密钥加密的)
2. server知道共同拥有密钥。依据给定的时间(动态生成新的password)。与client提交的password进行比較
3. server同一时候须要检查提交password的事件差值。跟client提交的日期偏差在1分钟之内。 */
NSLog(@"%@", pwd); [self postLogonWithUserName:self.userNameText.text password:pwd];
} #pragma mark - POST登录
- (void)postLogonWithUserName:(NSString *)userName password:(NSString *)password
{
// 1. url
NSString *urlStr = @"http://192.168.25.2/login.php";
NSURL *url = [NSURL URLWithString:urlStr]; // 2. request,POST方法。须要建立一个可变的请求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 1> POST 方法,全部涉及用户隐私的数据传递,都须要用POST方式提交!
request.HTTPMethod = @"POST"; // 2> 数据体
NSString *bodyStr = [NSString stringWithFormat:@"username=%@&password=%@", userName, password]; // 将字符串转换成二进制数据
request.HTTPBody = [bodyStr dataUsingEncoding:NSUTF8StringEncoding]; // 3. 发送“异步”请求。在其它线程工作。不堵塞当前线程程序运行
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { // 1> JSON,格式是和NSDictionary的高速包装格式很
// 将JSON转换成字典 Serialization
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:1 error:NULL]; CZUserInfo *userInfo = [CZUserInfo userInfoWithDict:dict]; NSLog(@"%@ %@", userInfo.userId, userInfo.userName);
}]; NSLog(@"=======");
}
转载请注明出处:http://blog.csdn.net/xn4545945
【iOS】MD5数据加密和网络安全的更多相关文章
- IOS关于数据加密(主要为登录加密)想总结的
首先上来就来说一下,IOS常见的几种加密算法 *哈希(散列)函数 : MD5.SHA *对称加密算法:DES.3DES.AES *非对称加密算法:RSA 一.哈希(散列)函数 1.MD5 MD ...
- iOS MD5加密
1.MD5加密 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321 ...
- Java工作流引擎关于数据加密流程(MD5数据加密防篡改)
关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单 拖拽式表单 工作流系统 流程数据加密 md5 数据保密流程数据防篡改 ...
- iOS MD5加密实现方法
使用方法 先导入头文件 #import "MD5.h" //md5测试 NSString * md1= [MD5 md5:" ]; NSLog(@"32bit= ...
- iOS MD5加密字符串
参考:http://stackoverflow.com/questions/1524604/md5-algorithm-in-objective-c 在线测试MD5:http://www.cmd5.c ...
- iOS MD5加密算法
考虑到用户账户安全,对用户的登录密码进行MD5加密 什么是MD5加密呢...懒了就不在这搬砖了,大家可以自己搜索查查,在此记录下代码,以供以后学习查询! 下面,直接上代码... // 需要倒入这个头文 ...
- iOS MD5 (Swift3)
import Foundation extension Int { func hexedString() -> String { return NSString(format:"%02 ...
- ios MD5大小写加密
#import "NSString+change.h" #import <CommonCrypto/CommonDigest.h> @implementation NS ...
- iOS,一行代码进行RSA、DES 、AES、MD5加密、解密
本文为投稿文章,作者:Flying_Einstein(简书) 加密的Demo,欢迎下载 JAVA端的加密解密,读者可以看我同事的这篇文章:http://www.jianshu.com/p/98569e ...
随机推荐
- HTML与XML总结
阅览<孙欣HTML>和<刘炜XML>过了一段时间,在这里学到的内容用思维导图来概括. HTML与XML都是标记语言. 同样点: HTML文档与XML文档有类似的结构. 前者是( ...
- xp硬盘安装Fedora14 过程记录及心得体会(fedora14 live版本680M 和fedora14 DVD版本3.2G的选择)
这次电脑奔溃了,奇怪的是直接ghost覆盖c盘竟然不中.之前电脑上硬盘安装的fedora14操作系统,也是双系统.不知道是不是这个问题,记得同学说过,在硬盘装fedora之后,要手动修改c盘隐藏的那个 ...
- WPF 图片浏览 伪3D效果
原文:WPF 图片浏览 伪3D效果 首先上效果图: 因项目要求,需要把图片以"好看"."炫"的效果展示出来,特地研究了一下WPF关于3D方面的制作,奈何最终成果 ...
- 关与 Visual.Assist.X.V10.7.1912的Crack破解补丁(vs 番茄插件的key破解方法)
在win7系统下, 我用的是vs2012版本号. Visual Assist沿用了快10年的界面,最终有了更新,变得更加适合Win8 以及 VS2012的主题风格了 ,这也是以后软件的发展趋势,仅仅是 ...
- 同TextView在不同的显示内容
首先,请原谅我不能命名文章.. . 我们不能准确地表达你说说什么什么,真正急着赶智商. 直接在地图上 如图所看到的显示的是两个textview 第一个实现的是,在同一个textview中给不同内容赋予 ...
- HDU 3836 Equivalent SetsTarjan+缩点)
Problem Description To prove two sets A and B are equivalent, we can first prove A is a subset of B, ...
- 如何插上U盘 自动复制内容
U盘插入自动复制,有效对付那些不肯给PPT的老师,还有一定几率拿到期末考试卷子···有图有真相!业界良心的好东西!!现在看还来得及!!! 代码优化了一下,把不是很重要的都删掉了,这次使用时看不出任何现 ...
- Xampp mysql无法启动的解决方案(转)
如果出现mysql 无法启动表明在安装xampp 前已经安装了mysql,造成mysql服务无法启动. [mysql] MySQL Service detected with wrong path23 ...
- javascript动画中的“帧”
在写游戏的时候,动画移动的速度需要保持一致,为了在各个软硬件环境中速度的一致,需要考虑帧频的不同. 计算时间系数: 时间系数 = 目标FPS / 实际FPS 计算实际FPS actualFPS = 1 ...
- android:强大的图像下载和缓存库Picasso
1.Picasso一个简短的引论 Picasso它是Square该公司生产的一个强大的图像下载并缓存画廊.官方网站:http://square.github.io/picasso/ 仅仅须要一句代码就 ...