iOS加密3——MD5

作者: 艳晓 | 来源:发表于2016-04-25 15:10 被阅读516次

    需要导入第三方Security,使用时导入头文件#import "NSString+Hash.h"

    md5 (信息-摘要算法) .散列运算. ------> 生成固定的字符串.
    算法是公开的. ------- 过程是不可逆的.
    任何不同的两个文件,生成的结果是不同的,字符串的长度是相同的.
    单纯的 MD5 加密已经很少了.
    关于 MD5 : 文件"指纹" 世界上没有两个完全一模一样的指纹(不同的文件加密之后,不会出现两个一样的值.)
    一般用作——文件检验!

    普通的MD5加密,现在已经有软件可以进行破解,所有我们想出来一种方法,使MD5这种加密更加复杂,更难被破解。这种方式就是加盐
    (原始密码 + 盐) MD5 运算.
    保证密码不被破解,就要保证盐值足够长/足够咸

    NSString *salt = @"521521qwertyuiop=/520412.!@#$%^&*()_";
    
    NSString *str = @"123456";    // md5 加密
    
    str = [str stringByAppendingString:salt];
    
    str = [str md5String];
    
    NSLog(@"%@",str);
    

    基于哈希算法的 hmac : 私钥 --- 公钥 成对存在的! 如果使用私钥加密,就使用公钥解密
    原理类似于 (密码 + 盐) 现在的 盐值 编程 私钥了.

    #import "NSString+Hash.h"#define Salt 
    @"fsdhjkfhjksdhjkfjhkd546783765"
    
    @interface HMViewController ()
    
    @end
    
    @implementation HMViewController
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        [self digest:@"123"]; //
        [self digest:@"abc"];
        [self digest:@"456"];
    }
      /*
               直接用MD5加密
    */
     - (NSString *)digest:(NSString *)str
     {
          NSString *anwen = [str md5String];
          NSLog(@"%@ - %@", str, anwen);
          return anwen;
      }
    
      /*
      加盐
      */
      - (NSString *)digest2:(NSString *)str
      {
         str = [str stringByAppendingString:Salt];
         NSString *anwen = [str md5String];
         NSLog(@"%@ - %@", str, anwen);
         return anwen;
     }
      /**
      * 多次MD5
      */
      - (NSString *)digest3:(NSString *)str
      {
              NSString *anwen = [str md5String];
              anwen = [anwen md5String];
              NSLog(@"%@ - %@", str, anwen);
                  return anwen;
       }
    
    /**
    * 先加密, 后乱序
    */
    - (NSString *)digest4:(NSString *)str
    {
    NSString *anwen = [str md5String];
    
    // 注册: 123 ---- 2CB962AC59075B964B07152D234B7020
    // 登录: 123 --- 202CB962AC59075B964B07152D234B70
    
    NSString *header = [anwen substringToIndex:2];
    NSString *footer = [anwen substringFromIndex:2];
    anwen = [footer stringByAppendingString:header];
    NSLog(@"%@ - %@", str, anwen);
    return anwen;
    }
    @end
    

    三、注册和验证的数据处理过程

    1.提交隐私数据的安全过程 – 注册
    (1)直接使用MD5加密(去MD5解密网站即可破解)

    (2)使用加盐(通过MD5解密之后,很容易发现规律)

    (3)多次MD5加密(使用MD5解密之后,发现还是密文,那就接着MD5解密)

    (4)先加密,后乱序(破解难度增加)

    三、注册和验证的数据处理过程

    1.提交隐私数据的安全过程 – 注册

    20151219100605097.png

    2.提交隐私数据的安全过程 – 登录

    20151219100621929.png

    相关文章

      网友评论

        本文标题:iOS加密3——MD5

        本文链接:https://www.haomeiwen.com/subject/lffqrttx.html