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);
}