#import "ViewController.h"
//第一步:导入iOS SDK 自带的框架,用于加密
#import <CommonCrypto/CommonCrypto.h>
#import "NSString+MD5.h"
@interface ViewController ()
//@property(nonatomic,strong)
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//准备加密的字符串
//const
//static
//因为MD5是基于C语言的我们给其字符串进行加密自后这个过程是明文变成密文的过程,Md5加密之后是128位的二进制(0,1,0,1,1,0.....)所以
//一个字节是8
//128/8 = 16(8位一个字节)
//所以每个8位数代表2个16进制所以MD5加密的结果是32的16进制数
NSString *string = @"I Love You ";
const char *data =[string UTF8String];
//3使用系统的函数
// CC_MD5_DIGEST_LENGTH ;
//字符数组:这个数组是为了保存我们的加密长度的
unsigned char result [CC_MD5_DIGEST_LENGTH];//32位16进制的东西
//像 char a [3];
//因为MD5是基于C语言的所以我们需要对字符串进行转码
//加密需要使用的函数
//参数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++) {
//%02x代表的是十六进制,02代表的是不足两位的时候,前面补0
//appendFormat: 可变字符的拼接
[mutableStr appendFormat:@"%02x",result[i]];
}
//NSLog(@"%@",mutableStr);
#pragma mark --封装MD5
NSString *str = @"ewkjkyterj;423tykl;iu4321ykl/543";
// NSString *str1 = [NSString stringMD5:str];
// NSLog(@"%@",str1);
NSLog(@"%@",[NSString stringMD5:str]);
#pragma mark --加密
//需求:创建一个数组,数组中存储元素,并且将这个数组写入到沙盒当中,然后加密
NSArray *array =@[@"1",@"2",@"3"];
NSString *document= [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];
NSString *paths = [document stringByAppendingPathComponent:@"yixue.plist"];
NSLog(@"%@",document);
//写入
[array writeToFile:paths atomically:YES];
NSData *datas = [NSData dataWithContentsOfFile:paths];
NSLog(@"data = %@",datas);
//进行数据加密
//创建MD5对象
CC_MD5_CTX md5;
//初始化MD5对象
CC_MD5_Init(&md5);
//准备开始进行数据加密
//参数1:CC_MD5_CTX *c md5对象的地址
//参数2:const void *data data字节数
//参数3:CC_LONG len
//加密
CC_MD5_Update(&md5, datas.bytes, (CC_LONG)datas.length);
//准备一个字符数组来存放存储的结果
unsigned char results [CC_MD5_DIGEST_LENGTH];
//保存结果.创建可变字符串将results数组中的内容保存到字符串中
NSMutableString *resultStr = [NSMutableString string];
CC_MD5_Final(results, &md5);
//遍历数组
for (int i = 0 ; i < CC_MD5_DIGEST_LENGTH; i++) {
[resultStr appendFormat:@"%02x",results[i]];
}
// NSLog(@"resultStr==%@",resultStr);
#pragma mark 图片的加密
//文件加密
//获取文件路径
NSString *path2 = [[NSBundle mainBundle]pathForResource:@"1" ofType:@"jpg"];
//根据路径创建NSdata对象
NSData *data2 =[NSData dataWithContentsOfFile:path2];
//创建数组 --》保存加密结果
unsigned char result2[CC_MD5_DIGEST_LENGTH];
//加密
CC_MD5(data2.bytes, (CC_LONG)data2.length, result2);
//创建可变的字符串用于存放密文
NSMutableString *resultStrs = [NSMutableString string];
for (int i =0; i<CC_MD5_DIGEST_LENGTH; i++) {
[resultStrs appendFormat:@"%02x",result2[i]];
}
NSLog(@"resultStrs=%@",resultStrs);
}
网友评论