base64編碼原理

2021-09-27 11:57:21 字數 1283 閱讀 4129

目前base64已經成為網路上常見的傳輸8bit位元組**的編碼方式之一。在做支付系統時,系統之間的報文互動都需要使用base64對明文進行轉碼,然後再進行簽名或加密,之後再進行(或再次base64)傳輸。那麼,base64到底起到什麼作用呢?

在引數傳輸的過程中經常遇到的一種情況:使用全英文的沒問題,但一旦涉及到中文就會出現亂碼情況。與此類似,網路上傳輸的字元並不全是可列印的字元,比如二進位制檔案、等。base64的出現就是為了解決此問題,它是基於64個可列印的字元來表示二進位制的資料的一種方法。

電子郵件剛問世的時候,只能傳輸英文,但後來隨著使用者的增加,中文、日文等文字的使用者也有需求,但這些字元並不能被伺服器或閘道器有效處理,因此base64就登場了。隨之,base64在url、cookie、網頁傳輸少量二進位制檔案中也有相應的使用。

base64是網路上最常見的用於傳輸8bit位元組**的編碼方式之一,在了解base64編碼之前,先了解幾個基本概念:位、位元組。

位:"位(bit)"是計算機中最小的資料單位。每一位的狀態只能是0或1;

位元組:8個二進位制位構成1個"位元組(byte)",位元組是儲存空間的基本計量單位。1個位元組可以儲存1個英文本母,2個位元組可以儲存1個漢字;

base64編碼的作用

因為有些網路傳送渠道並不支援所有的位元組,例如傳統的郵件只支援可見字元的傳送,像ascii碼的控制字元就不能通過郵件傳送。這樣就受到了很大的限制,比如二進位製流的每個位元組不可能全部是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協議的情況下,開闢一種新的方案來支援二進位制檔案的傳送。把不可見字元用可見字元來表示。而base64就是一種基於64個可見字元來表示二進位制資料的表示方法。

1、為什麼取值範圍是0~63?

可以回顧一下二進位制轉換10進製的方法:

最小的二進位制:00000000轉換為10進製的結果是0;

最大的二進位制:00111111轉換為10進製的結果是:

0×27+0×26+1×25+1×24+1×23+1×22+1×21+1×20 = 63

base64將3個位元組轉變為4個位元組,因此,編碼後的**量(以位元組為單位)約比編碼前的**量多了1/3。如果**量正好是3的整數倍,那麼恰好多了1/3。但如果不是,那麼,當多出的**量不是3的整數倍時,**量除以3的餘數就是2或者1。轉換的時候,結果不夠6位的用0來補上相應的位置,之後再在6位的前面補兩個0。轉換完空出的結果就用就用「=」來補位,總之要保證最後編碼出來得位元組數是4的倍數。

例1:字元:slf

對應ascii碼:s:83 l:76 f:70

轉換成對應的二進位制:

83:01010011、76:01001100、70:01000110

BASE64 編碼原理

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

Base64編碼原理

一 base64編碼原理 1 base64編碼原理簡單介紹 base64要求把每三個8bit的位元組轉換為四個6bit的位元組 3 8 4 6 24 然後把6bit再添兩位高位0,組成四個8bit的位元組,也就是說,轉換後的字串理論上將要比原來的長1 3。編碼原理如下所示 1 base64的編碼都是...

Base64編碼原理

所謂base64,就是說選出64個字元 小寫字母a z 大寫字母a z 數字0 9 符號 再加上作為墊字的 實際上是65個字元 作為乙個基本字符集。然後,其他所有符號都轉換成這個字符集中的字元。具體來說,轉換方式可以分為四步。第一步,將每三個位元組作為一組,一共是24個二進位制位。第二步,將這24個...