Base64是加密算法嗎?
因爲Base64算法是可逆的,所以不能算是加密算法,而算是一種編碼方式。是一種使用64個可打印字符來表示二進制數據的編碼方式
作用
- 轉碼
- 向瀏覽器以字符串輸出
- 當url中有特殊字符時,可以利用Base64編碼來進行轉義
- 對於圖片,本身是二進制,而Base64可以表示任何的二進制數據,因此可以直接在圖片的src下存放Base64編碼後的圖片內容,這樣就可以直接展示圖片,而無需去請求對應url路徑的圖片,減少網絡開銷
- 語言文字底層通過二進制傳輸,此時也可以通過Base64編碼來展示
算法原理
官方
把每3個8位字節轉換爲四個6位的字節(3*8 = 4*6 = 24),然後在每個6位的前面補兩個0(不足6位的後面補0),組成四個8位的字節,再將每個字節的值和64位字符編碼表的值進行替換,不足4個字節的,後面補
=
64的由來
一般中文佔兩個字節,而最大的字符是3個字節,也就是24位(一個字節8位),而24=3*8=4*6
,所以我們可以用4個6位來表示一個字符(爲了兼容最大的字符,所以用3個字節來表示一個),而二進制6位數的最大值是111111
=63,也就是64個字符,這就是Base64當中64的由來。
64個字符編碼表
0-25是大寫字母,26-51是小寫字母,52到61是數字,62是+
,63是/
計算過程
- 找到指定編碼字符的字符編碼表
- 找到編碼表中對應字符的值,並將值轉爲二進制
- 對二進制數進行分組,每6位一組(不足6位的後面補0)
- 去Base64表中查找其對應的編碼字符
- 編碼表參照完成後,最後不足4字節的後面補
=
,編碼結束
例如將GB2312編碼中的你
字進行base64編碼: