IOS学习 网络HTTP 加密 base64,md5,hamo,时间戳

#import "ViewController.h"

#import "NSString+Hash.h"

@interface ViewController ()

@end

@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

}


-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    [self demo6];

}


// 时间戳密码:动态密码! U/将军令/手机令牌 密码一致在改变!

-(void)demo6{

    // 原始密码:

    NSString *password = @"zhang";

    

    // hmacKey

    NSString *hmacKey = @"8a627a4578ace384017c997f12d68b23";

    

    // 获得当前时间:

    NSDate *date = [NSDate date];

    

    NSLog(@"%@",date);

    

    // 设定当前时间的格式

    NSDateFormatter *fommatter = [[NSDateFormatter alloc] init];

    [fommatter setDateFormat:@"yyyy-MM-dd HH:mm"];

    

    // 获得当前时间的字符串

    NSString *time = [fommatter stringFromDate:date];

    

    NSLog(@"当前时间time:%@",time);

    

    // 第一次 hmac 运算(原始密码 + hmacKey)

    password = [password hmacMD5StringWithKey:hmacKey];

    

    // 拼接字符串(第一次 hmac 运算之后的结果 + 当前时间)

    password = [password stringByAppendingString:time];

    

    // 第二次 hmac 运算(之前拼接后的字符串 + hmacKey) 得到的密码就是动态密码了!

    password = [password hmacMD5StringWithKey:hmacKey];

    

    NSLog(@"动态密码: %@",password);

}


// hmac 加密算法,目前在国内渐渐流行!

-(void)demo5{

    // 因为要在 Block 中修改这个值! 所以 添加 __block

    __block NSString *password = @"hello";

    

    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/httpLogin/hmackey.php"];

    

    // 发送网络请求

    [[[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

     

//          NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);

        

        // JSON --> OC

        

        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];

        

        NSString *hmacKey = dict[@"hmacKey"];

        

        NSLog(@"hmacKey: %@",hmacKey);

        

        // 用从服务器得到的 hmacKey 对密码进行 hmac 运算.

        

        password = [password hmacMD5StringWithKey:hmacKey];

        

        NSLog(@"%@",password);

        

    }] resume];

}


// MD5加密:现在一般用作身份验证/校验!

-(void)demo4{

    

    NSString *str = @"hello";

    

    // 对字符串进行 MD5 加密/运算

    // 如果用作加密/ 服务器和客户端采用相同的加密算法计算!

    str = str.md5String;

    

    NSLog(@"str: %@",str);

    

    NSString *strM = @"helloh";

    

    strM = strM.md5String;

    

    NSLog(@"strM:%@",strM);

    

    // 市面上所谓的解密,其实不是反向解密!是在数据库中查询记录!

    

    NSString *str1 = @"heshiqiufengbeihuashan521";

    str1 = str1.md5String;

    

    NSLog(@"%@",str1);

    

    // MD5 加密,针对简单的密码,可以通过一些网站查出来!  //http://www.cmd5.com

    

    // 人为的增加密码难度!    MD5 加盐(盐加的多一点)

    

    // (用户密码 + 盐值) MD5 运算!

    

    NSString *password = @"123456";

    

    // 盐值 (服务器和客户端的盐值是一样的就OK) 越咸(/复杂)越好

    

    NSString *salt = @"!@#$%^&*()_wertyuiop[1234567890-=";

    

    // 给密码添加盐值

    password = [password stringByAppendingString:salt];

    

    // MD5 运算

    password = password.md5String;

    

    // md5 加盐,是一种比较高级的加密算法!

    

    NSLog(@"%@",password);

}


// base64 解密

-(void)demo3{

    // 1.拿到加密之后的base64二进制数据

    NSData *base64Data = [NSData dataWithContentsOfFile:@"/Users/liaojianguo/zlf/私密图片"];

    

    // base64加密之后的二进制数据,转换成普通的二进制数据

    NSData *data = [[NSData alloc] initWithBase64EncodedData:base64Data options:0];

    

    [data writeToFile:@"/Users/liaojianguo/zlf/解密之后的图片" atomically:YES];

    

    // base64 缺点: 1.加密之后的数据中有 = !很容易解密!

    // 2.容易解密! 加密之后的数据,比原来的数据变大((8-6)/6) 1/3!

}


// base64 加密文件

-(void)demo2{

    // 1.需要得到文件的二进制数据!

    NSData *data = [NSData dataWithContentsOfFile:@"/Users/liaojianguo/zlf/images/png image/apple.png"];

    

    // 2.将得到的文件二进制数据,进行base64加密

    NSData *base64Data = [data base64EncodedDataWithOptions:0];

    

    // 3.将加密之后的数据,存储

    [base64Data writeToFile:@"/Users/liaojianguo/zlf/私密图片" atomically:YES];

}


// base64 加密字符串!

-(void)demo1{

    // 普通的  8bit 二进制数据!

    NSString *str = @"hello world";

    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

    

    // 将字符串进行 base64 加密

    

    // base64加密之后的二进制数据

    NSData *base64Data = [data base64EncodedDataWithOptions:0];

    // base64加密之后的字符串

    NSString *base64String = [data base64EncodedStringWithOptions:0];

    

    NSLog(@"data : %@",data);

    NSLog(@"base64Data : %@",base64Data);

    NSLog(@"base64String : %@",base64String);


}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值