一、Base64
二、MD5
三、HMac
一、1.Base64簡單說明
? ? 描述:Base64可以成為密碼學(xué)的基石,非常重要。
? ? 特點:可以將任意的二進制數(shù)據(jù)進行Base64編碼
? ? 結(jié)果:所有的數(shù)據(jù)都能被編碼為并只用65個字符就能表示的文本文件。
? ? 65字符:A~Z a~z 0~9 + / =
? ? 對文件進行base64編碼后文件數(shù)據(jù)的變化:編碼后的數(shù)據(jù)~=編碼前數(shù)據(jù)的4/3,會大1/3左右。
2.Base64編碼原理
? ? 1)將所有字符轉(zhuǎn)化為ASCII碼;
? ? 2)將ASCII碼轉(zhuǎn)化為8位二進制;
? ? 3)將二進制3個歸成一組(不足3個在后邊補0)共24位,再拆分成4組,每組6位;
? ? 4)統(tǒng)一在6位二進制前補兩個0湊足8位;
? ? 5)將補0后的二進制轉(zhuǎn)為十進制;
? ? 6)從Base64編碼表獲取十進制對應(yīng)的Base64編碼;
處理過程說明:
? ? a.轉(zhuǎn)換的時候,將三個byte的數(shù)據(jù),先后放入一個24bit的緩沖區(qū)中,先來的byte占高位。
? ? b.數(shù)據(jù)不足3byte的話,于緩沖區(qū)中剩下的bit用0補足。然后,每次取出6個bit,按照其值選擇查表選擇對應(yīng)的字符作為編碼后的輸出。
? ? c.不斷進行,直到全部輸入數(shù)據(jù)轉(zhuǎn)換完成。
? ? d.如果最后剩下兩個輸入數(shù)據(jù),在編碼結(jié)果后加1個“=”;
? ? e.如果最后剩下一個輸入數(shù)據(jù),編碼結(jié)果后加2個“=”;
? ? f.如果沒有剩下任何數(shù)據(jù),就什么都不要加,這樣才可以保證資料還原的正確性。
二、MD5加密
1、什么是MD5?
全稱是Message Digest Algorithm 5,譯為“消息摘要算法第5版”
效果:對輸入信息生成唯一的128位散列值(32個字符)
MD5特點:
輸入兩個不同的明文不會得到相同的輸出值
根據(jù)輸出值,不能得到原始的明文,即其過程不可逆
MD5的應(yīng)用
由于MD5加密算法具有較好的安全性,而且免費,因此該加密算法被廣泛使用
主要運用在數(shù)字簽名、文件完整性驗證以及口令加密等方面
三、HMAC加密
? ? //使用一個秘鑰加密數(shù)據(jù)做兩次散列
? ? //秘鑰來自服務(wù)器,比起MD5加鹽安全得多,MD5本地的鹽可能會被泄露
? ? //1、發(fā)一個賬號,服務(wù)器生成一個key(秘鑰),服務(wù)器保存帳號,賬號對應(yīng)的key,key給客戶端進行明文加密(HMAC密碼),發(fā)給服務(wù)器保存,注冊成功。
? ? //2、使用已經(jīng)存在的key(秘鑰)對帳號加密,帶著key、HMAC密碼、帳號區(qū)服務(wù)器驗證。
? ? //3、 辦:(1)、發(fā)帳號給服務(wù)器,請求一個key(2)、加密驗證,通過把key保存在本地。
//? ? key泄漏只是一個用戶的。
? ? //4、使用32位字符串加密,模擬登錄,32位HMAC密碼+發(fā)送時間 服務(wù)器驗證 兩次驗證(收到時間 往前1-2分鐘)