1.必须导入系统的头文件<CommonCrypto/CommonCrypto.h>
2.//MD5加密 为字符串加密
-(void)md5
{
//1.需要加密的内容
NSString str = @"我的iOS老师是最帅";
//2.将数据转换为data类型 因为系统提供的md5加密的函数为C语言函数,所以需要将OC的字符串转换成C语言的字符串
const char sourceData = [str UTF8String];
//3.C语言的char类型的数组,长度为CC_MD5_DIGEST_LENGTH,因为md5加密是将任意长度的二进制值储存为固定长度的二进制值,所以这里我们长度给定
unsigned char result[CC_MD5_DIGEST_LENGTH];
/
*
* @param data#> 需要加密的源数据(const void *) description#>
* @param len#> 元数据的长度 description#>
* @param md#> 计算之后所存储的容器 description#>
*
*/
//4.将加密好的值存储到result中
CC_MD5(sourceData, (CC_LONG)strlen(sourceData), result);
//5.声明一个可变字符串,用来存储一会加密完成之后的值
NSMutableString *md5_str = [NSMutableString string];
//6.遍历result数组,将所有的元素进行16进制的编码
for (int i=0; i<CC_MD5_DIGEST_LENGTH; i++)
{
[md5_str appendFormat:@"%02X",result[i]];
}
NSLog(@"加密完成%@",md5_str);
}
//为数组加密
- (void)md5_array
{
NSArray *sourceArray = @[@"a",@"c",@"d"];
//将数组转换为data类型
NSData *sourceData = [NSJSONSerialization dataWithJSONObject:sourceArray options:NSJSONWritingPrettyPrinted error:nil ];
NSString *sourceStr = [[NSString alloc]initWithData:sourceData encoding:NSUTF8StringEncoding];
//1.将string对象转换为char *类型
const char *strChar = sourceStr.UTF8String;
//2.创建一个容器
unsigned char result[CC_MD5_DIGEST_LENGTH];
//3.进行MD5计算
CC_MD5(strChar, (CC_LONG)strlen(strChar), result);
//4.声明一个可变字符串,用来最终转换格式完成后的数据
NSMutableString *resultString = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH];
//5.遍历result数组,进行格式转换
for (int i=0; i<CC_MD5_DIGEST_LENGTH; i++)
{
[resultString appendFormat:@"%02X",result[i]];
}
NSLog(@"数组加密%@",resultString);
}