Base64原理解析

2021-09-14 04:43:30 字數 2359 閱讀 5163

base64是基於64個字元進行轉換的,因為2的6次方正好為64,所以6bit就可以表示出64個字元,因此在轉換的過程中以6bit表示乙個字元。

原理:

3x8=4x6,核心是這個公式

base64的編碼都是按字串長度,以每3個8bit的字元為一組

針對每組,首先獲取每個字元的ascii編碼值

將ascii編碼轉換成8bit的二進位制,得到一組3*8=24bit的位元組

再將這24bit劃分為4個6bit的位元組,並在每個6bit的位元組前面都填兩個高位0,得到4個8bit的位元組

將這4個8bit的位元組轉換成10進製,對照base64編碼表,得到對應編碼後的字元

ascii表

base64編碼表

案例

w           e          n

ascii: 119 101 110

8bit: 01110111 01100101 01101110

6bit: 011101 110110 010101 101110

十進位制: 29 54 21 46

base64: d 2 v u

所以 "wen" ---- > d2vu

j          i           a          n           g

ascii: 106 105 97 110 103

8bit: 01101010 01101001 01100001 01101110 01100111

6bit: 011010 100110 100101 100001 011011 100110 011100 異常

十進位制: 26 38 37 33 27 38 28

base64: a m l h b m c =

所以 "jiang" ---- > amlhbmc=

注意:base64是四個字元為一組,不夠的補=

工具**:

進製轉換

base64轉換工具

轉base64

漢字轉base64這裡需要注意,漢字本身可以有多種編碼,比如gb2312、utf-8、gbk等等,每一種編碼的base64對應值都不一樣。下面的例子以utf-8為例

utf-8e4b8a5,寫成二進位制就是三位元組的11100100 10111000 10100101,然後按照上面的規則轉換得到base64編碼為:5lil

所以,漢字嚴(utf-8編碼)的base64值就是5lil

從上面英語字母或者漢字轉換為base64的來看,就是先轉換為對應的編碼的二進位制,然後在進行轉換

補充內容

data:image/png;base64,ivborw0kggoaaaansuheugaaaaeaaaakcayaaabidfamaaaa....
這是這是data uri scheme目的是將一些小資料,直接嵌入到網頁中,而不用在引用外部

在上面data表示取得資料的協定名稱,image/png是資料型別名稱,base64是資料的編碼方法,逗號後面就是這個image/png檔案base64編碼後的資料

data uri scheme支援的型別有:

BASE64編碼原理解析

1.每個字元按照ascii編碼對應乙個8bit,以3字元為一組 2.3 8 24,分成4份,每份6bit,在每份高位新增00,重新合成乙個4份8bit資料 3.新的4份8bit資料換算成10進製,得到4個數字 4.根據下面的base64編碼表,得到對應的新的字元 jascii 8374 748bit...

base64編碼原理解析

一.base64編碼由來 為什麼會有base64編碼呢?因為有些網路傳送渠道並不支援所有的位元組,例如傳統的郵件只支援可見字元的傳送,像ascii碼的控制字元就不能通過郵件傳送。這樣用途就受到了很大的限制,比如二進位製流的每個位元組不可能全部是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協議...

BASE64 編碼原理

unit ubase64 編碼原理 將3個位元組轉換成4個位元組 3 x 8 24 4x6 先讀入3個位元組,每讀乙個位元組,左移8位,再右移四次,每次6位,這樣就有4個 位元組了。解碼原理 將4個位元組轉換成3個位元組,先讀入4個6位 用或運算 每次左 移6位,再右移3次,每次8位,這樣就還原了。...