IOS学习 网络HTTP 加密 base64,md5,hamo,时间戳
来源:互联网 发布:mysql in用什么取代 编辑:程序博客网 时间:2024/06/04 20:15
#import "ViewController.h"
#import "NSString+Hash.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[selfdemo6];
}
// 时间戳密码:动态密码! U盾/将军令/手机令牌密码一致在改变!
-(void)demo6{
// 原始密码:
NSString *password =@"zhang";
// hmacKey
NSString *hmacKey =@"8a627a4578ace384017c997f12d68b23";
// 获得当前时间:
NSDate *date = [NSDatedate];
NSLog(@"%@",date);
// 设定当前时间的格式
NSDateFormatter *fommatter = [[NSDateFormatteralloc] init];
[fommatter setDateFormat:@"yyyy-MM-dd HH:mm"];
// 获得当前时间的字符串
NSString *time = [fommatterstringFromDate: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
__blockNSString *password = @"hello";
NSURL *url = [NSURLURLWithString:@"http://127.0.0.1/httpLogin/hmackey.php"];
// 发送网络请求
[[[NSURLSessionsharedSession] dataTaskWithURL:urlcompletionHandler:^(NSData *data,NSURLResponse *response,NSError *error) {
// NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
// JSON --> OC
NSDictionary *dict = [NSJSONSerializationJSONObjectWithData:dataoptions:0error: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 = [NSDatadataWithContentsOfFile:@"/Users/liaojianguo/zlf/私密图片"];
// 将 base64加密之后的二进制数据,转换成普通的二进制数据
NSData *data = [[NSDataalloc] initWithBase64EncodedData:base64Dataoptions:0];
[data writeToFile:@"/Users/liaojianguo/zlf/解密之后的图片"atomically:YES];
// base64 缺点: 1.加密之后的数据中有 = 号!很容易解密!
// 2.容易解密!加密之后的数据,比原来的数据变大((8-6)/6) 1/3!
}
// base64 加密文件
-(void)demo2{
// 1.需要得到文件的二进制数据!
NSData *data = [NSDatadataWithContentsOfFile:@"/Users/liaojianguo/zlf/images/png image/apple.png"];
// 2.将得到的文件二进制数据,进行base64加密
NSData *base64Data = [database64EncodedDataWithOptions:0];
// 3.将加密之后的数据,存储
[base64Data writeToFile:@"/Users/liaojianguo/zlf/私密图片"atomically:YES];
}
// base64 加密字符串!
-(void)demo1{
// 普通的 8bit二进制数据!
NSString *str =@"hello world";
NSData *data = [strdataUsingEncoding:NSUTF8StringEncoding];
// 将字符串进行 base64加密
// base64加密之后的二进制数据
NSData *base64Data = [database64EncodedDataWithOptions:0];
// base64加密之后的字符串
NSString *base64String = [database64EncodedStringWithOptions:0];
NSLog(@"data : %@",data);
NSLog(@"base64Data : %@",base64Data);
NSLog(@"base64String : %@",base64String);
}
- IOS学习 网络HTTP 加密 base64,md5,hamo,时间戳
- iOS网络解析中的md5加密+时间戳
- IOS网络笔记--base64编码和MD5加密的使用方法
- iOS MD5 和 Base64加密
- IOS 加密解密(AES、DES、base64、md5)
- iOS 加密(MD5 ,AES,BASE64)
- iOS - 加密 Base64 MD5 DES AES RSA
- iOS常用加密方式(MD5,AES,BASE64)与网络数据安全
- iOS经常使用加密方式(MD5,AES,BASE64)与网络数据安全
- 【iOS】MD5(加密)/AES/Base64加密和解密
- iOS Base64、凯撒加密 ,MD5加密(16、32位)
- iOS MD5(加密)/AES/Base64加密和解密
- iOS 面试问答之加密形式: AES加密, DES加密, MD5加密,SHA1加密, BASE64加密
- MD5+SHA+BASE64加密
- Base64和MD5加密
- Base64、MD5加密
- Base64 和 MD5 加密
- python MD5(base64)加密
- poj 2386 Lake Counting
- RunHiddenConsole.exe下载地址
- 6-1 Verilog Mealy状态机之序列检测器
- 渐进增强
- Altium Designer10中查找元器件的三种方法
- IOS学习 网络HTTP 加密 base64,md5,hamo,时间戳
- 安卓第一篇总结
- android MaterialDesign之CardView
- Dynamics CRM2016 Set Values of all Data Types using Web API
- git用远程仓库强制更新本地修改,本地修改不保存
- Android权限
- python安装mysqldb模块遇到的问题和解决方法
- Solr-5.5 QuickStart
- Java枚举类型小结