美文网首页iOS 开发
数据安全之MD5的简单使用

数据安全之MD5的简单使用

作者: fwlong | 来源:发表于2016-06-01 20:24 被阅读112次

    MD5 消息摘要算法第五版

    计算机安全领域广泛使用的散列函数,具有:压缩性(MD5值长度都是固定的),容易计算,抗修改,强抗碰撞的特性
    MD5---一般用于验证数据的完整性
    MD5的使用
    引入iOS SDK框架,用于加密

    #import <CommonCrypto/CommonCrypto.h>
    

    1.准备加密字符串

        NSString * string = @"I love my dear";
    
    

    2.对字符串进行转码(MD5是基于C语言)

        const char * data = [string UTF8String];
    

    3.使用系统函数
    用字符串数组去存储加密后的相关内容

        unsigned char result[CC_MD5_DIGEST_LENGTH];
    

    加密使用的函数

     //参数1:需要加密的内容  参数2:加密内容的长度  参数3:需要加密的长度
        CC_MD5(data, (CC_LONG)strlen(data), result);
    

    4.创建可变字符串,保存结果

        NSMutableString * mutableStr = [NSMutableString string];
    

    5.遍历结果数组,然后添加

    for (int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {
            //
            [mutableStr appendFormat:@"%02x",result[i]];
        }
        
        NSLog(@"%@",mutableStr);
    

    MD5自己封装的使用

    //在外部调用
    +(NSMutableString *)stringMD5:(NSString *)string;
    
    //导入框架
    #import <CommonCrypto/CommonCrypto.h>
    
    +(NSMutableString *)stringMD5:(NSString *)string{
        //1.将字符串进行转码
        const char *data = [string UTF8String];
        //2.加密结果长度
        unsigned char result[CC_MD5_DIGEST_LENGTH];
        //3.进行加密
        CC_MD5(data, (CC_LONG)strlen(data), result);
        //4.创建可变字符串
        NSMutableString * mutableString = [NSMutableString string];
        for (int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {
            [mutableString appendFormat:@"%02x",result[i]];
        }
        return mutableString;
    }
    
    

    外部的使用

    #import "NSString+MD5.h"
    
     NSString * str = @"I love my dear";
     NSLog(@"%@",[NSString stringMD5:str]);
    

    创建一个数组,数组中存储元素,并且将这个数组写入到沙盒当中,并加密

    NSArray * array = @[@"1",@"2"];
        NSString * path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
        NSString *str = [path stringByAppendingPathComponent:@"hello.plist"];
        [array writeToFile:str atomically:YES];
        //读取
        NSData * data = [NSData dataWithContentsOfFile:str];
    
        //将数据进行加密
        //1.创建MD5对象
        CC_MD5_CTX md5;
        //2.初始化MD5对象
        CC_MD5_Init(&md5);
        //3.准备开始进行数据加密
        CC_MD5_Update(&md5, (data).bytes, (CC_LONG)data.length);
        
        //准备一个字符数组来存放结果
        unsigned char result[CC_MD5_DIGEST_LENGTH];
        //保存结果
        CC_MD5_Final(result, &md5);
        //创建可变字符串,将result数组中的内容保存到字符串中
        NSMutableString * mutableString = [NSMutableString string];
        for (int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {
            [mutableString appendFormat:@"%02x",result[i]];
        }
        NSLog(@"%@",mutableString);
    
    

    给图片进行加密

     //获得文件路径
        NSString * path = [[NSBundle mainBundle] pathForResource:@"1.jpg" ofType:nil];
        //创建data
        NSData * data = [NSData dataWithContentsOfFile:path];
        //加密
        unsigned char result[CC_MD5_DIGEST_LENGTH];
        
        CC_MD5(data.bytes, (CC_LONG)data.length, result);
        //创建可变字符串用于存放密文
        NSMutableString * string = [NSMutableString string];
        for (int i = 0 ; i<CC_MD5_DIGEST_LENGTH; i++) {
            [string appendFormat:@"%02x",result[i]];
        }
        NSLog(@"%@",string);
    

    相关文章

      网友评论

        本文标题:数据安全之MD5的简单使用

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