Besa64是一種加料值位加密法,那為什么叫做Base64呢?因為無論明文是什么(比如漢字,特殊符號等),加密后的密文都會變成字母A-Z,a-z,0-9,+,/這64個字符,被他加密后體積一般會變成原來的四分之三。
前端大部分圖片都是可以轉成Base64編碼的圖片,這樣可以減少一個http請求,但是如果把大圖片編碼到html/css中,會造成后者體積明顯增加,明顯影響網頁打開速度。如果用外聯圖片的話,圖片可以在頁面渲染完成后繼續加載,不會造成阻塞。如果Base64是被編碼到CSS/JS中,是可以緩存的,因為CSS/JS文件可以緩存。使用Base64的另一個弊端是IE的兼容性問題。IE以下不支持data url,IE8開始支持data url,卻有大小限制。
還有一個問題是,如果構建工具比較落后,手動插入Base64是很蛋疼的,編輯器會卡到哭。
Base64編碼原理
Base64的索引表,字符選用了'A-Z、a-z、0-9、+、/'64個可打印字符。數值代表字符的索引,這個是標準Base64協議規定的,不能更改。64個字符用6個bit位就可以全部表示,一個字節有8個bit位,剩下2個bit位就浪費掉啦,這樣就不得不犧牲一部分空間啦。這里需要弄明白的就是一個Base64字符是8個bit,但是有效部分只有右邊的6個bit,左邊兩個永遠是0.
那么怎么用6個有效bit來表示傳統字符的8個bit呢?8和6的最小公倍數是24,也就是說3個傳統字符可以由4個Base64字符來表示,保證有效位數是一樣的,這樣就多了1/3的字節數來彌補Base64只有6個有效bit的不足。
Base64編碼可能有點奇怪,因為大多數的編碼都是由字符串轉化成二進制的過程,而從二進制轉成字符的過程稱為解碼。而Base64的概念就恰好反了,由二進制轉到字符稱為編碼,有字符到二進制稱為解碼。
Base64編碼主要用于傳輸,存儲,表示二進制等領域,還可以用來加密,單這種加密比較簡單,只是一眼看上去不知道內容罷了,當然也可以對Base64的字符序列進行定制來進行加密。