1.base64:
1>嚴(yán)格的說 base64 并不算是加密,只是一種編碼的算法, base64 無論是加密還是解密,都是直接操作二進(jìn)制數(shù)據(jù),系統(tǒng)中提供了關(guān)于 base64的加密解密的方法,都是以 base64 開頭
2>base64可以將任意的二進(jìn)制數(shù)據(jù)(例如圖片/視頻/文件等的二進(jìn)制數(shù)據(jù))編碼成字符串,在網(wǎng)絡(luò)上傳輸,
3>base64編碼后的數(shù)據(jù)由a-z,A-Z,/ + =這些符號(hào)表示
4>base64編碼之后數(shù)據(jù)會(huì)變大
2.加密的要素:算法和秘鑰,算法一般是公開的,需要做的是保護(hù)秘鑰的安全
1>對(duì)稱加密算法:
加密解密用的都是相同的秘鑰,
速度快,適合對(duì)大數(shù)據(jù)加密(例如視頻)
典型的算法: DES 3DES AES
2>非對(duì)稱加密算法:
算法公開,可逆的加密算法
用公鑰加密,用私鑰解密, (也可以用私鑰加密,用公鑰解密)
速度慢,適合對(duì)小數(shù)據(jù)加密,但是更加安全
典型的算法: RSA
3>普遍的加密方法:
原始數(shù)據(jù)用對(duì)稱加密,在使用 非對(duì)稱加密 將 對(duì)稱加密的密鑰 進(jìn)行加密,然后在從網(wǎng)絡(luò)上傳輸
4>散列算法:
散列算法經(jīng)常用來給密碼進(jìn)行加密,(防止后臺(tái)工作人員竊密)
不可逆加密: MD5 / SHA1 / SHA256 / SHA512
5>MD5 加密后是32字節(jié)
MD5雖然是不可逆的算法,(但是可以暴力破解,解決的辦法是加鹽)
MD5加鹽:原密碼+一個(gè)復(fù)雜的字符串,然后在進(jìn)行 MD5運(yùn)算(復(fù)雜程度還不夠)
HMAC:原密碼+一個(gè)字符串,進(jìn)行 MD5運(yùn)算,將運(yùn)算的結(jié)果+原密碼在進(jìn)行 MD5加密,(從網(wǎng)絡(luò)截取數(shù)據(jù),并不破解,直接發(fā)送給服務(wù)器,也可以達(dá)到解密的效果,解決辦法+時(shí)間標(biāo)識(shí))
MD5加時(shí)間戳:
將一個(gè)字符串,進(jìn)行 MD5加密計(jì)算,得到一個(gè) MD5值
把原密碼和之前生成的 MD5值,再進(jìn)行 HMAC加密
從服務(wù)器獲取當(dāng)前時(shí)間到分鐘的字符串
將第二部步產(chǎn)生的HMAC 值+時(shí)間 和第一步產(chǎn)生的 MD5值進(jìn)行HMAC加密
6>鑰匙串
將密碼保存到本地,不能保存原文,需要進(jìn)行加密處理,以防沙盒文件漏,通過系統(tǒng)提供的鑰匙串功能,可以在本地保存密碼,系統(tǒng)使用 AES 的方式對(duì)密碼進(jìn)行加密
使用SSKeychain 框架進(jìn)行鑰匙串操作
7>ECB 和 CBC 只是加密方式并不是加密算法,傳統(tǒng)的 AES 和 DES 都支持這兩種方式
ECB: 電子密碼本 將要加密的數(shù)據(jù)分塊,分別加密,數(shù)據(jù)塊的加密過程相互獨(dú)立,互不影響.例如,相同的數(shù)據(jù)塊加密結(jié)果是相同的
CBC: 密碼鏈條 將要加密的數(shù)據(jù)分塊,分別加密,后加密的數(shù)據(jù)塊依賴于前面的加密結(jié)果.例如,相同的數(shù)據(jù)塊加密結(jié)果是不同的
8>DES/3DES/AES
DES:數(shù)據(jù)加密標(biāo)準(zhǔn)(用的很少因?yàn)閺?qiáng)度不夠)
3DES:使用3個(gè)密鑰,對(duì)相同的數(shù)據(jù)執(zhí)行3次加密,強(qiáng)度增強(qiáng)(維護(hù)密鑰比較麻煩)
AES:高級(jí)加密標(biāo)準(zhǔn)(目前美國國家安全局,蘋果鑰匙串使用的都是 AES)
9>RSA
非對(duì)稱加密
算法強(qiáng)度復(fù)雜,加密依賴于算法與密鑰
加密解密速度慢