• 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    MD5SHADES3DESRC2和RC4RSAIDEADSAAES
     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
  • 相关阅读:
    【STM32F429】第1章 当前主流的小型嵌入式GUI
    【STM32H7】第14章 UDP用户数据报协议基础知识
    【STM32F429】第14章 UDP用户数据报协议基础知识
    【STM32F407】第14章 UDP用户数据报协议基础知识
    【STM32H7】第13章 RL-TCPnet V7.X之创建多个TCP客户端
    【STM32F429】第13章 RL-TCPnet V7.X之创建多个TCP客户端
    【STM32F407】第13章 RL-TCPnet V7.X之创建多个TCP客户端
    【STM32H7】第12章 RL-TCPnet V7.X之TCP客户端
    【STM32F429】第12章 RL-TCPnet V7.X之TCP客户端
    迄今最强综合Demo,H7-TOOL的RTX5全家桶版本整体设计框架
  • 原文地址:https://www.cnblogs.com/oc-bowen/p/5173551.html
Copyright © 2020-2023  润新知