Besa64加密原理

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的字符序列進行定制來進行加密。

Base64編碼是從二進制到字符的過程,像一些中文字符用不同的編碼轉為二進制的,產生的二進制是不一樣的,所以最終產生的Base64字符也不一樣。例如“上網”對應utf-8的Base64編碼是“5LiK572R”,對應GB2312格式的Base64編碼是“yc/N+A==”。
291137095326660.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容