1. MD5
1.1 什么是MD5
全稱是Message Digest Algorithm 5,譯為“消息摘要算法第5版”
效果:對(duì)輸入信息生成唯一的128位散列值(32個(gè)字符)
1.2 MD5的特點(diǎn)
輸入兩個(gè)不同的明文不會(huì)得到相同的輸出值
根據(jù)輸出值,不能得到原始的明文,即其過程不可逆
1.3 MD5的應(yīng)用
由于MD5加密算法具有較好的安全性,而且免費(fèi),因此該加密算法被廣泛使用
主要運(yùn)用在數(shù)字簽名、文件完整性驗(yàn)證以及口令加密等方面
MD5解密網(wǎng)站:http://www.cmd5.com

注冊(cè)

登錄
2. MD5改進(jìn)
現(xiàn)在的MD5已不再是絕對(duì)安全,對(duì)此,可以對(duì)MD5稍作改進(jìn),以增加解密的難度
加鹽(Salt):在明文的固定位置插入隨機(jī)串,然后再進(jìn)行MD5先加密,后亂序:先對(duì)明文進(jìn)行MD5,然后對(duì)加密得到的MD5串的字符進(jìn)行亂序
......
總之宗旨就是:黑客就算攻破了數(shù)據(jù)庫,也無法解密出正確的明文
3. 代碼實(shí)現(xiàn)
3.1 沒有加鹽的
//引入 #import "NSString+Hash.h"
// 原始數(shù)據(jù)
NSString *password = @"zhang1";
// 將原始數(shù)據(jù)進(jìn)行MD5 加密.
password = password.md5String;
NSLog(@"password:%@",password);
NSString *pass1 = @"zhang2";
pass1 = pass1.md5String;
NSLog(@"pass1:%@",pass1);
3.2 加鹽的MD5加密
// 單純的 MD5 加密能夠被破解!
// 更高一級(jí)的MD5機(jī)密: MD5 加鹽.
// 在用戶原始密碼的基礎(chǔ)上增加一個(gè) "鹽值",提高用戶密碼的復(fù)雜度!
NSString *salt = @"~!@#$%^&*greedyDoor";
password = [password stringByAppendingString:salt];
password = password.md5String;