--MD5 数据加密--

MD5: Message Digest Algorithm MD5
为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。

MD5算法是哈希算法的一种 其具有以下特点:
1.压缩性 任意长度的数据,算出的MD5值长度都是固定的(16进制, 32位)。
2.容易计算 从源数据计算出MD5值很容易
3.抗修改性 对原数据进行任何改动,哪怕只改1个字节,所得到的MD5值都有跟大区别。
4.强抗碰撞性 已知原数据和MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

先引入头文件 (此为系统文件)

#import <CommonCrypto/CommonCrypto.h>

接着上代码

#pragma mark - 加密字符串
    //准备一个字符串
    NSString *str = @"I LOVE YOU";//同一个字符串进行MD5加密出来的内容类似
    //2.因为MD5是C语言的 所以我们需要将字符串进行编码
    const char *data = [str UTF8String];
    //3.使用字符串数组去存取加密后相关的内容
    //CC_MD5_DIGEST_LENGTH表述长度
    unsigned char result [CC_MD5_DIGEST_LENGTH];
    //4.进行MD5加密
    //参数1  要加密的内容
    //参数2  要加密的DATA的一个长度
    //参数3 MD5
    CC_MD5(data, (CC_LONG)strlen(data), result);
    //5.创建可变字符串 保存结果
    NSMutableString *mutableString = [NSMutableString string];
    //6.遍历结果数组 然后添加到可变字符串中
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        //16进制需要大家知道格式修饰符(%x代表16进制 02当不足两位的时候, 前边补零 当足够两位的时候 不影响)
        [mutableString appendFormat:@"%02x", result[i]];
    }
    NSLog(@"%@", mutableString);
#pragma mark - 加密NSData
    //需求 创建一个数组 数组中存储元素 将这个数组写入沙盒里
    //1.创建一个数组
    NSArray *array = @[@"小暖心", @"肉rr"];
    //2.寻找沙盒路径
    NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    //3.拼接路径
    NSString *path = [documentPath stringByAppendingString:@"array.plist"];
    //4.写入
    [array writeToFile:path atomically:YES];

    //从沙盒中取出NSData类型的数据
    NSData *data = [NSData dataWithContentsOfFile:path];
    NSLog(@"%@", data);
    //NSData类型数据加密过程
    //1.创建MD5对象
    CC_MD5_CTX md5;
    //2.初始化md5对象
    CC_MD5_Init(&md5);
    //3.准备开始进行数据加密
    CC_MD5_Update(&md5, data.bytes, (CC_LONG)data.length);

    //4.准备一个字符串数组用来存储结果

    unsigned char result[CC_MD5_DIGEST_LENGTH];
    //结束加密
    CC_MD5_Final(result, &md5);


    //5.差UN构建一个可变的字符串
    NSMutableString *string = [NSMutableString string];
    //6.遍历数组给可变字符串赋值
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [string appendFormat:@"%x", result[i]];
    }
    NSLog(@"%@", string);


}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值