Message Digest Algorithm MD5(中文名為消息摘要算法第五版)為計(jì)算機(jī)安全領(lǐng)域廣泛使用的一種散列函數(shù)旭咽,用以提供消息的完整性保護(hù).
在開發(fā)中,如果我們用HTTP發(fā)送請求的話,或多或少會(huì)涉及到用戶的賬戶信息,這個(gè)時(shí)候我們可以用MD5對用戶的信息進(jìn)行加密,下面本菜菜推薦幾種常用的加密方法_
就是普通的用md5加密
先在項(xiàng)目中導(dǎo)入MD5的類,github上應(yīng)該有,不過我已經(jīng)整合到項(xiàng)目里面,最后會(huì)放入下載地址.
//測試用的密碼
NSString*passWord = @"12345678";
//進(jìn)行加密
NSString*keyString = [passWord md5String];
NSLog(@"%@",keyString);
但是發(fā)現(xiàn)這種太簡單,還是很容易被百度的md5"暴力破解"......
所以又多了三種方法.
加鹽
要加密的密碼 + 一個(gè)復(fù)雜的字符串雏蛮,防止用戶輸入的密碼過于簡單
HMAC
要加密的密碼 + 一個(gè)字符串進(jìn)行混合
再 md5 計(jì)算
把計(jì)算的結(jié)果 + 要加密的密碼再次混合
再進(jìn)行 md5 計(jì)算
時(shí)間戳密碼 這種方式是最安全的
把key(傳給服務(wù)器的秘鑰) 用md5加密
把要加密的密碼和之前用md5加密后的key再進(jìn)行hmac加密
從服務(wù)器獲取時(shí)間
第二步產(chǎn)生的hmac+時(shí)間混合 再和第一次產(chǎn)生的key值進(jìn)行hmac加密
但是樓主發(fā)現(xiàn)這幾個(gè)寫法實(shí)現(xiàn)太繁瑣,沒什么技術(shù)含量,所以就把它們封裝到一個(gè)類中,只要?jiǎng)?chuàng)建這個(gè)類,就能一句話加密.
當(dāng)然,樓主這樣也是很菜滴~
demo下載地址就放在后邊了,里邊詳細(xì)寫了加密原理和步驟恢氯,下面就簡單的介紹一下封裝后的效果
代碼示范:
使用前先導(dǎo)入頭文件:
1.加鹽方式
//創(chuàng)建對象
MM_MD5*md5 = [MM_MD5 new];
//傳入加密的密碼和要加入的"鹽"
NSString*passWordWithSald = [md5 getPassWord:@"123" andFixString:@"%$@&bb"];
NSLog(@"%@",passWordWithSald);
2.HMAC
//創(chuàng)建對象
MM_MD5*md5 = [MM_MD5 new];
//傳入加密的密碼和要混合的字符串
NSString*passWordWithSald = [md5 getPassWordHmac:@"123456" andFixString:@"348fjfh&G"];
NSLog(@"%@",passWordWithSald);
3.時(shí)間戳密碼
//創(chuàng)建對象
MM_MD5*md5 = [MM_MD5 new];
//傳入加密的密碼和秘鑰 以及服務(wù)器地址,要從服務(wù)器上獲取時(shí)間
NSString*passWordWithSald = [md5 getPassWord:@"123456" andkey:@"key" andTimeWithUrlString:@"xxxxxxx"];
NSLog(@"%@",passWordWithSald);
好啦带斑,就這么簡單,是不是比以前要簡單許多?
樓主github地址:
https://github.com/YMS1230/YMS_MD5_demo.git
大家多多關(guān)注呀~