IOS存储安全 MD5 (重要)
分享一个牛人写的加密分类,注释相当清晰。
加密方案
方案一:直接 MD5 非常不安全 (穷举破解)
pwd = pwd.md5String;
方案二 MD5 + 盐 盐值要够`咸`,可以从服务器获取
pwd = [pwd stringByAppendingString:@"无规律复杂的盐"].md5String;
安全方案三 - HMAC
pwd = [pwd hmacMD5StringWithKey:@"key"];
相对之前的方案,安全级别要高很多,使用 `key` 对 pwd 进行`加密`,然后在进行 md5,然后再次加密,再次 md5
安全方案四 - 时间戳密码(本地时间与服务器可能不一致,最好从服务器获取时间)
保证了不同时间传输的密码都是不一样的,服务器判断时要判断当前 分钟和前一分钟。密码有效期为两分钟。
// 对密码进行时间戳加密
- (NSString*)timePassword:(NSString*) pwd{
// 1.生成key 的 md5
NSString *key = @"weijing_yun".md5String;
NSLog(@"key: %@", key);
// 2.用key 对密码进行hmac 加密
NSString *pwdkey = [pwd hmacMD5StringWithKey:key];
// 3. 取当前的服务器系统时间 放在主线程执行 以变后面加时间戳
NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/hmackey.php"];
// 使用同步获取时间
NSData *data = [NSData dataWithContentsOfURL:url];
// 反序列化
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
//取出日期字符串
NSString *dateStr = dict[@"key"];
NSLog(@"时间%@", dateStr);
// 4.密码 + 时间戳
pwdkey = [pwdkey stringByAppendingString:dateStr];
NSLog(@"%@" , pwdkey);
// 5.再次使用 hmac 加密
return [pwdkey hmacMD5StringWithKey:key];
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。