iOS中常见的几种加密方法总结

2020-01-21 03:29:58王冬梅

MD5 应用:

一致性验证:MD5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要.就像每个人都有自己独一无二的指纹,MD5对任何文件产生一个独一无二的数字指纹.

利用 MD5 来进行文件校验,被大量应用在软件下载站,论坛数据库,系统文件安全等方面(是否认为添加木马,篡改文件内容等).百度‘MD5'第一个网站进去,利用数据库伪解密,即反查询 数字签名; 安全访问认证;

使用方法

利用 MD5 对字符串进行加密


 NSString *password = @"WangPengfei";
 password = [password md5String];
 NSLog(@"password1:%@", password);

加盐:可以保证 MD5加密之后更加安全


 NSString *salt = @"234567890-!@#$%^&*()_+QWERTYUIOP{ASDFGHJKL:XCVBNM<>";
 [password stringByAppendingString:salt];
 password = [password md5String];
 NSLog(@"password2:%@", password);

每一个公司都有自己的“盐值”,盐值越复杂,越安全

五. 时间戳密码

基本介绍

动态密码:相同的密码明文+相同的加密算法-->因为每次登陆时间都不同,所以每次计算出的结果也都不相同.可以充分保证密码的安全性. 服务器会计算两个时间值,当期时间和前一分钟的时间(比如:第59S发送的网络请求,一秒钟后服务器收到并作出响应,这时服务器当前时间比客户端发送时间晚一分钟,仍然能够判断准确的值)

使用步骤

获取MD5 首次加密的密码


 // 1. 当前密码
 NSString *password = @"zhang";
 // 2. hmacKey值,是对“WangPengfei” 进行 MD5加密之后的值(动态生成的)
 NSString *hmacKey = @"d3bba33b51acaa0a272de7a2f6dfa233";

加密过程


 // 1. 第一次加密:第一次 HMAC 运算
 password = [password hmacMD5StringWithKey:hmacKey];
 // 2.1 获得当前的时间
 NSDate *date = [NSDate date];
 // 2.2 获得当前时间的字符串
 // 实例化时间格式器
 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
 // 设置时间格式
 formatter.dateFormat = @"yyyy-MM-dd HH:mm";
 // 获取当前时间(要和服务器保持一致)
 NSString *dateStr = [formatter stringFromDate:date];
 // 3. 将第一次加密后的密码与当前时间的字符串拼接在一起
 password = [password stringByAppendingString:dateStr];
 // 4. 进行第二次 HMAC 加密
 password = [password hmacMD5StringWithKey:hmacKey];

访问 loginhmac.php 接口,发送请求

创建请求


 NSURL *url = [NSURL URLWithString:@"http://www.easck.com// 设置请求体内容
 NSString *body = [NSString stringWithFormat:@"username=zhangsan&password=%@", password];
 request.HTTPBody = [body dataUsingEncoding:NSUTF8StringEncoding];