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