#import "ViewController.h"
//第一步:導(dǎo)入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.
//準(zhǔn)備加密的字符串
//const
//static
//因為MD5是基于C語言的我們給其字符串進行加密自后這個過程是明文變成密文的過程,Md5加密之后是128位的二進制(0,1,0,1,1,0.....)所以
//一個字節(jié)是8
//128/8 = 16(8位一個字節(jié))
//所以每個8位數(shù)代表2個16進制所以MD5加密的結(jié)果是32的16進制數(shù)
NSString *string = @"I Love You ";
const char *data =[string UTF8String];
//3使用系統(tǒng)的函數(shù)
// CC_MD5_DIGEST_LENGTH ;
//字符數(shù)組:這個數(shù)組是為了保存我們的加密長度的
unsigned char result [CC_MD5_DIGEST_LENGTH];//32位16進制的東西
//像 char a [3];
//因為MD5是基于C語言的所以我們需要對字符串進行轉(zhuǎn)碼
//加密需要使用的函數(shù)
//參數(shù)1:需要加密的內(nèi)容
//參數(shù)2:需要加密的內(nèi)容的長度 使用字符串?dāng)?shù)組去存儲加密自后的相關(guān)內(nèi)容
//參數(shù)3:需要加密的長度
CC_MD5(data, (CC_LONG)strlen(data), result);
//4創(chuàng)建可變字符串保存結(jié)果
NSMutableString *mutableStr = [NSMutableString string];
//5遍歷結(jié)果數(shù)組,然后打印
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 --加密
//需求:創(chuàng)建一個數(shù)組,數(shù)組中存儲元素,并且將這個數(shù)組寫入到沙盒當(dāng)中,然后加密
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);
//進行數(shù)據(jù)加密
//創(chuàng)建MD5對象
CC_MD5_CTX md5;
//初始化MD5對象
CC_MD5_Init(&md5);
//準(zhǔn)備開始進行數(shù)據(jù)加密
//參數(shù)1:CC_MD5_CTX *c md5對象的地址
//參數(shù)2:const void *data data字節(jié)數(shù)
//參數(shù)3:CC_LONG len
//加密
CC_MD5_Update(&md5, datas.bytes, (CC_LONG)datas.length);
//準(zhǔn)備一個字符數(shù)組來存放存儲的結(jié)果
unsigned char results [CC_MD5_DIGEST_LENGTH];
//保存結(jié)果.創(chuàng)建可變字符串將results數(shù)組中的內(nèi)容保存到字符串中
NSMutableString *resultStr = [NSMutableString string];
CC_MD5_Final(results, &md5);
//遍歷數(shù)組
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"];
//根據(jù)路徑創(chuàng)建NSdata對象
NSData *data2 =[NSData dataWithContentsOfFile:path2];
//創(chuàng)建數(shù)組 --》保存加密結(jié)果
unsigned char result2[CC_MD5_DIGEST_LENGTH];
//加密
CC_MD5(data2.bytes, (CC_LONG)data2.length, result2);
//創(chuàng)建可變的字符串用于存放密文
NSMutableString *resultStrs = [NSMutableString string];
for (int i =0; i<CC_MD5_DIGEST_LENGTH; i++) {
[resultStrs appendFormat:@"%02x",result2[i]];
}
NSLog(@"resultStrs=%@",resultStrs);
}
無標(biāo)題文章
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門齿尽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人灯节,你說我怎么就攤上這事循头。” “怎么了炎疆?”我有些...
- 文/不壞的土叔 我叫張陵卡骂,是天一觀的道長。 經(jīng)常有香客問我形入,道長全跨,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任亿遂,我火速辦了婚禮浓若,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蛇数。我一直安慰自己挪钓,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布苞慢。 她就那樣靜靜地躺著诵原,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绍赛,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼箩言!你這毒婦竟也來了硬贯?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布源葫,位于F島的核電站,受9級特大地震影響砖瞧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嚷狞,卻給世界環(huán)境...
- 文/蒙蒙 一块促、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧床未,春花似錦竭翠、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春传货,著一層夾襖步出監(jiān)牢的瞬間屎鳍,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 注:本文使用的Android Studio版本是 2.1.2忧饭。 做公司項目,需要對項目進行代碼混淆+簽名打包筷畦,然后...
- 第一汁咏,心理咨詢與治療的三大流派分別是精神分析亚斋、人本主義和認知行為,羅杰斯和馬斯洛是人本主義流派的兩位大師級人物攘滩,羅...