1. 程式人生 > >base64 編碼原理

base64 編碼原理

base64 編碼原理

Base64 編碼是網路上最常見的用於傳輸8Bit位元組碼的編碼方式之一,它是基於64個可列印字元來表示二進位制資料的方法。

Base64 編碼是從二進位制到字元的過程,可用於在HTTP環境下傳遞較長的標識資訊,並且採用Base64 編碼具有不可讀性,需要解碼後才能閱讀。

編碼前的字元為8位的ASCII編碼,而編碼後則為6位,其中包含的字元為:A-Z、a-z、0-9、+、/。共64個字元:26 + 26 + 10 + 1 + 1 = 64。【注:其實是65個字元,“=”是填充字元】

ASCII碼對照表

base64碼對照表

原理:

  把每三個8Bit的位元組轉換為四個6Bit的位元組

比如長度為3個位元組的資料,資料位數為3*8=24位,base編碼後為24 / 6 = 4位元組。

長度為4個位元組的資料,需新增2個0值位元組,變為6個位元組,資料位數為6*8 = 48位,base編碼後為48 / 6 = 8位元組,其中最後兩位為 ” = “(見下方示例)。

長度為5個位元組的資料,需新增1個0值位元組,變為6個位元組,資料位數為6*8 = 48位,base編碼後為48 / 6 = 8位元組,其中最後一位為 ” = ” (見下方示例)。


例:字串“Xue”經過Base64編碼後變為“WHVl”

   "X" 對應的ASCII為 0101 1000
   "u" 對應的ASCII為 0111 0101
   "e" 對應的ASCII為 0110 0101

這裡寫圖片描述

如果資料的位元組數不是3的倍數,則其位數就不是6的倍數。因為6和8的最小公倍數為24,摺合成位元組數即為3。

故轉化前的資料位元組數必須為3的倍數,如果不夠則補1個或2個零值位元組,即補8個0或16個0。
轉化時,會從末尾起,每隔6位全0的轉化為”=”。

例:字串“Xu”經過Base64編碼後變為“WHU=”

這裡寫圖片描述

例:字串“X”經過Base64編碼後變為“WA==”

這裡寫圖片描述