码迷,mamicode.com
首页 > 移动开发 > 详细

IOS存储安全 MD5 (重要)

时间:2015-06-09 06:12:06      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

分享一个牛人写的加密分类,注释相当清晰。

Security.zip

 

加密方案

方案一:直接 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];

}

IOS存储安全 MD5 (重要)

标签:

原文地址:http://www.cnblogs.com/weijingyun/p/4562413.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!