//
// ViewController.m
// IOS_0129_HTTP请求
//
// Created by ma c on 16/1/29.
// Copyright © 2016年 博文科技. All rights reserved.
// #import "ViewController.h"
#import "MBProgressHUD+MJ.h"
#import "NSString+Hash.h" @interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *textName;
@property (weak, nonatomic) IBOutlet UITextField *textPassword; - (IBAction)btnlogin; @end @implementation ViewController /* 网络安全
1.常见加密算法
MD5\SHA\DES\3DES\RC2和RC4\RSA\IDEA\DSA\AES
2.加密算法的选择
一般公司都有自己的加密方案,按照公司的接口文档的规定去加密
3.MD5
1>全称:“Message Digest Algorithem5”,译为“消息摘要算法第五版”
2>效果:对输入信息生成唯一的128位散列值(32个字符)
3>特点:
a.输入两个不同的明文不会得到两个相同的输出值
b.根据输出值,不会得到原始的明文,即其过程不可逆
4>应用
a.MD5加密算法有较好的安全性,而且免费,因此该加密算法被广泛应用
b.主要运用在数字签名、文件完整性验证以及口令加密等方面
5>MD5解密网站:http://www.cmd5.com 2.网络数据加密
1>加密对象:隐私数据,比如密码,银行信息
2>加密方案
a.提交隐私数据必须用POST请求
b.使用加密算法对隐私数据进行加密,比如MD5
3>加密增强:加大破解难度
a.对明文进行两个MD5加密:MD5(MD5($pass))
b.先对明文进行撒盐,在进行MD5加密:MD5($pass.$salt) 3.本地存储加密
1>加密对象:重要数据,比如单击游戏数据 4.代码安全问题
1>现在已经有工具和技术能反编译出源代码:逆向工程
2>问题:现在反编译出来的都是C语言代码,可读性不高
3>优点:最起码能知道源代码里面用的是那些框架 ->指导我们开发不了解的软件
4>解决方案:混淆代码 */ - (void)viewDidLoad {
[super viewDidLoad]; self.view.backgroundColor = [UIColor groupTableViewBackgroundColor];
} - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
} - (IBAction)btnlogin { NSString *usernameText = self.textName.text;
if (usernameText.length == ) {
[MBProgressHUD showError:@"请输入账号"];
return;
} self.textPassword.secureTextEntry = YES;
NSString *password = self.textPassword.text;
if (password.length == ) {
[MBProgressHUD showError:@"请输入密码"];
return;
}
// 增加蒙板
[MBProgressHUD showMessage:@"正在拼命加载..."]; //2.POST请求
NSString *strURL = @"http://localhost:8080/MJServer/login";
NSURL *url = [NSURL URLWithString:strURL];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //5s后请求超时(默认60s超时)
request.timeoutInterval = ;
//设置请求方式
request.HTTPMethod = @"POST";
//设置请求头
[request setValue:@"iPhone6" forHTTPHeaderField:@"User-Agent"];
//对密码进行加密
password = [self doubleMD5:password];
password = [self MD5Salt:password];
password = [self MD5Reorder:password];
//设置请求体
NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@",usernameText,password];
//NSString -> NSData
request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding]; //异步请求
[self sendAsyncWithRequest:request]; }
//异步请求
- (void)sendAsyncWithRequest:(NSURLRequest *)request
{
NSOperationQueue *queue = [NSOperationQueue mainQueue]; [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { //隐藏蒙版
[MBProgressHUD hideHUD];
NSHTTPURLResponse *resp = (NSHTTPURLResponse *)response;
NSString *msg = [NSHTTPURLResponse localizedStringForStatusCode:resp.statusCode];
NSLog(@"%ld %@ %@",resp.statusCode, msg, resp.allHeaderFields); //这个block会在请求完毕的时候自动调用
if (connectionError || data == nil) {
[MBProgressHUD showError:@"请求失败"];
return;
}
//解析服务器返回的JSON数据
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
NSString *error = dict[@"error"];
if (error) {
[MBProgressHUD showError:error];
}
else{
NSString *success = dict[@"success"];
[MBProgressHUD showSuccess:success];
}
}];
} ///两次加密
- (NSString *)doubleMD5:(NSString *)text
{
return [[text md5String] md5String];
} ///先撒盐,在进行MD5加密
- (NSString *)MD5Salt:(NSString *)text
{
NSString *salt = [text stringByAppendingString:@"abc"];
return [salt md5String];
}
///先加密,后乱序
- (NSString *)MD5Reorder:(NSString *)text
{
//加密
NSString *pwd = [text md5String]; NSString *prefix = [pwd substringFromIndex:];
NSString *subfix = [pwd substringToIndex:]; //乱序
NSString *result = [prefix stringByAppendingString:subfix]; return result;
} @end

IOS-网络(数据安全:MD5加密)的更多相关文章

  1. iOS base64编码 MD5 加密

    //创建一个Base64编码的NSString对象 //字符串 转二进制 NSData *nsdata = [@"iOS Developer Tips encoded in Base64&q ...

  2. IOS中把字符串加密/IOS中怎么样MD5加密/IOS中NSString分类的实现

    看完过后,你会学到: 1学习IOS开发中的分类实现, 2以及类方法的书写, 3以及字符串的MD5加密/解密. ---------------------------wolfhous---------- ...

  3. iOS开发 字符串MD5加密

    /*** MD5 ***/ #define CC_MD5_DIGEST_LENGTH    16          /* digest length in bytes */ #define CC_MD ...

  4. iOS 中使用md5加密

    #import <CommonCrypto/CommonDigest.h> @implementation MD5Util +(NSString *)encode:(NSString *) ...

  5. iOS~~MD5加密

    // 一般加密 +(NSString *)md5String:(NSString *)str { const char *password=[str UTF8String]; unsigned cha ...

  6. iOS,一行代码进行RSA、DES 、AES、MD5加密、解密

    本文为投稿文章,作者:Flying_Einstein(简书) 加密的Demo,欢迎下载 JAVA端的加密解密,读者可以看我同事的这篇文章:http://www.jianshu.com/p/98569e ...

  7. iOS开发 - 网络数据安全加密(MD5)

    提交用户的隐私数据 一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 用户的隐私数据登 ...

  8. iOS经常使用加密方式(MD5,AES,BASE64)与网络数据安全

    演示样例项目下载地址  https://github.com/cerastes/Encryption 1MD5 创建MD5类 #import <Foundation/Foundation.h&g ...

  9. IOS 数据加密总结(及MD5加密)

    数据安全总结 1.网络数据加密1> 加密对象:隐私数据,比如密码.银行信息2> 加密方案* 提交隐私数据,必须用POST请求* 使用加密算法对隐私数据进行加密,比如MD53> 加密增 ...

  10. IOS开发之—— 各种加密的使用(MD5,base64,DES,AES)

    基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法)SHA(Secure Hash Algorithm ...

随机推荐

  1. load_1m

  2. stark - 数据列表

    一.效果图 二.数据列表 知识点: 完成(list_display)(list_display_links) 1.根据str,拿字段对象,取中文 val = self.model._meta.get_ ...

  3. 爬虫Scrapy框架

    安装scrapy 在安装过程中报错:解决方案 通过在https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted,然后下载: CP后是python 版本,32 ...

  4. Mybatis的WHERE和IF动态

    mapper.xml: <!--查询套餐产品 --> <select id="queryComboProducts" resultType="com.r ...

  5. mysql 数据操作 多表查询 子查询 带EXISTS关键字的子查询

    带EXISTS关键字的子查询 EXISTS关字键字表示存在. EXISTS 判断某个sql语句的有没有查到结果 有就返回真  true 否则返回假 False 如果条件成立 返回另外一条sql语句的返 ...

  6. (转) SpringBoot非官方教程 | 第一篇:构建第一个SpringBoot工程

    简介 spring boot 它的设计目的就是为例简化开发,开启了各种自动装配,你不想写各种配置文件,引入相关的依赖就能迅速搭建起一个web工程.它采用的是建立生产就绪的应用程序观点,优先于配置的惯例 ...

  7. Miller-Rabin素数测试算法(POJ1811Prime Test)

    题目链接:http://poj.org/problem?id=1811 题目解析:2<=n<2^54,如果n是素数直接输出,否则求N的最小质因数. 求大整数最小质因数的算法没看懂,不打算看 ...

  8. 【Lua】面向对象编程(一)

    类和对象: account.lua   module(...,package.seeall) Account={balance=} Account.new=function(self,o) local ...

  9. (转)如何让ActiveXObject( "Microsoft.XmlDom ")对象在非IE浏览器下显示数据?firefox(火狐)

    如何让ActiveXObject( "Microsoft.XmlDom ")对象在非IE浏览器下显示数据?firefox(火狐) 2013-09-10 16:01 2152人阅读 ...

  10. uva11020 set

    有n个人,每个人有两个属性x,y.如果对于一个人P(x,y) 不存在另外一个人(x',y') 使得x'<x,y'<=y 或者 x'<=x,y'<y 我们说p是有优势的,每次给出 ...