iOS之数据加密

2016-12-24  本文已影响93人  正义吖

MD5

//MD5对字符串进行加密 
-(void)md5MethodWithSourceString:(NSString*)sourceString{
    //用的是C语言的函数进行加密,所以我们需要将字符串转换为C语言字符串
    const char* str = sourceString.UTF8String;
    //声明一个C语言的字符串数组,用来存放加密之后的所有字符
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    //md5加密
    //第一个参数:要加密的参数
    //第二个参数:要加密的字符串的长度
    //第三个参数:用来接收加密好的字符的容器
    CC_MD5(str, (CC_LONG)strlen(str), result);
    
    //将加密好的字符数组中的字符转为16进制的字符串,以供使用
    NSMutableString * resultString = [[NSMutableString alloc] init];
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        //将C语言字符。转换为16进制的字符串
        [resultString appendFormat:@"%02X",result[i]];
    }
    NSLog(@"加密好的数据为---%@",resultString);
//    BDDDE9CA37FCFC0F23E97CA2AD8E111B @"我爱我"
//    D8A5189B6D5D1B81698D25D27E1E651C @"我爱我哦"
//    BDDDE9CA37FCFC0F23E97CA2AD8E111B @"我爱我"
}

####### 代码示例 MD5对字符串进行加密

//NSData类型进行MD5加密
-(void)md5MethodWithSourceData:(NSData*)sourceData{
    //创建MD5变量
    CC_MD5_CTX md5;
    //初始化md5
    CC_MD5_Init(&md5);
    //准备MD5加密
    //第一个参数:md5变量取地址
    //第二个参数:要加密的数据
    //第三个参数:数据的长度
    CC_MD5_Update(&md5, sourceData.bytes, (CC_LONG)sourceData.length);
    //结束MD5加密
    //接收加密好的容器
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5_Final(result,&md5);
    NSMutableString* resultString = [[NSMutableString alloc] initWithCapacity:CC_MD5_DIGEST_LENGTH];
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [resultString appendFormat:@"%02X",result[i]];
    }
    NSLog(@"data类型md5加密之后的结果---%@",resultString);
}

sha-1 NSData类型进行sha-1加密

//SHA—1加密 160位 二进制。 40位 16进制。
- (void)shaMethodWithSourceString:(NSString*)sourceString{
    //用的是C语言的函数进行加密,所以我们需要将字符串转换为C语言字符串
    const char* str = sourceString.UTF8String;
    unsigned char result[CC_SHA1_DIGEST_LENGTH];
    CC_SHA1(str,(CC_LONG)strlen(str),result);
    NSMutableString* resultString = [[NSMutableString alloc] init];
    for (int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {
        [resultString appendFormat:@"%02X",result[i]];
    }
    NSLog(@"sha-1加密之后的结果---%@",resultString);
}
//NSData类型进行sha-1加密
- (void)shaMethodWithSourceData:(NSData*)sourcedata{
    ///创建MD5变量
    CC_SHA1_CTX sha1;
    //初始化md5
    CC_SHA1_Init(&sha1);
    //准备MD5加密
    //第一个参数:md5变量取地址
    //第二个参数:要加密的数据
    //第三个参数:数据的长度
    CC_SHA1_Update(&sha1, sourcedata.bytes, (CC_LONG)sourcedata.length);
    //结束MD5加密
    //接收加密好的容器
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_SHA1_Final(result,&sha1);
    NSMutableString* resultString = [[NSMutableString alloc] initWithCapacity:CC_MD5_DIGEST_LENGTH];
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [resultString appendFormat:@"%02X",result[i]];
    }
    NSLog(@"data类型sha1加密之后的结果---%@",resultString);
}

钥匙串加密

//钥匙串加密 保存我们不希望发生变化的数据,例如应用程序的UUID,在iOS7之后,我们将应用程序卸载重装,应用程序的UUID可能会发生变化,我们不希望它一直变化,就可以将UUID存储在钥匙串中。
-(void)keychain{
    //初始化工具类
    //第一个参数:工具类的标志符,取值的时候可以根据标志符找到对应的工具
    //accessGroup:一般填工程的唯一标志符,用来区分是那个工程所保存的数据
    KeychainItemWrapper * wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"test" accessGroup:@"com.lanou.ly.senior-Secrity-06"];
//    //存储用户名和密码
//    //使用基本和字典一致,但是key必须使用系统提供的,不能自己定义。
//    [wrapper setObject:@"用户名" forKey:(__bridge id)kSecAttrAccount];
//    [wrapper setObject:@"密码" forKey:(__bridge id)kSecValueData];
    //清除钥匙串中存储的数据
    [wrapper resetKeychainItem];
    //取值
    NSString* userName = [wrapper objectForKey:(__bridge id)kSecAttrAccount];
    NSLog(@"userName---%@",userName);
}

导入 #import <CommonCrypto/CommonCrypto.h>//加密相关头文件 #import "KeychainItemWrapper.h"//官方提供的钥匙串加密工具

最后切记在viewDidLoad方法里面调用

上一篇 下一篇

猜你喜欢

热点阅读