Base64編碼原理

2021-07-05 10:40:04 字數 2521 閱讀 9215

所謂base64,就是說選出64個字元----小寫字母a-z、大寫字母a-z、數字0-9、符號"+"、"/"(再加上作為墊字的"=",實際上是65個字元)----作為乙個基本字符集。然後,其他所有符號都轉換成這個字符集中的字元。

具體來說,轉換方式可以分為四步。

第一步,將每三個位元組作為一組,一共是24個二進位制位。

第二步,將這24個二進位制位分為四組,每個組有6個二進位制位。

第三步,在每組前面加兩個00,擴充套件成32個二進位制位,即四個位元組。

第四步,根據下表,得到擴充套件後的每個位元組的對應符號,這就是base64的編碼值。

0 a  17 r   34 i   51 z

1 b  18 s   35 j   52 0

2 c  19 t   36 k   53 1

3 d  20 u   37 l   54 2

4 e  21 v   38 m   55 3

5 f  22 w   39 n   56 4

6 g  23 x   40 o   57 5

7 h  24 y   41 p   58 6

8 i   25 z   42 q   59 7

9 j  26 a   43 r   60 8

10 k  27 b   44 s   61 9

11 l  28 c   45 t   62 +

12 m  29 d   46 u   63 /

13 n  30 e   47 v

14 o  31 f   48 w   

15 p  32 g   49 x

16 q  33 h   50 y

因為,base64將三個位元組轉化成四個位元組,因此base64編碼後的文字,會比原文本大出三分之一左右。

4.舉乙個具體的例項,演示英語單詞man如何轉成base64編碼。

text content

man

ascii

7797

110bit pattern01

0011

0101

1000

0101

1011

10index

1922546

base64-encoded

twfu

第一步,"m"、"a"、"n"的ascii值分別是77、97、110,對應的二進位制值是01001101、01100001、01101110,將它們連成乙個24位的二進位制字串010011010110000101101110。

第二步,將這個24位的二進位制字串分成4組,每組6個二進位制位:010011、010110、000101、101110。

第三步,在每組前面加兩個00,擴充套件成32個二進位制位,即四個位元組:00010011、00010110、00000101、00101110。它們的十進位制值分別是19、22、5、46。

第四步,根據上表,得到每個值對應base64編碼,即t、w、f、u。

因此,man的base64編碼就是twfu。

5.如果位元組數不足三,則這樣處理:

a)二個位元組的情況:將這二個位元組的一共16個二進位制位,按照上面的規則,轉成三組,最後一組除了前面加兩個0以外,後面也要加兩個0。這樣得到乙個三位的base64編碼,再在末尾補上乙個"="號。

比如,"ma"這個字串是兩個位元組,可以轉化成三組00010011、00010110、00010000以後,對應base64值分別為t、w、e,再補上乙個"="號,因此"ma"的base64編碼就是twe=。

b)乙個位元組的情況:將這乙個位元組的8個二進位制位,按照上面的規則轉成二組,最後一組除了前面加二個0以外,後面再加4個0。這樣得到乙個二位的base64編碼,再在末尾補上兩個"="號。

比如,"m"這個字母是乙個位元組,可以轉化為二組00010011、00010000,對應的base64值分別為t、q,再補上二個"="號,因此"m"的base64編碼就是tq==。

6.

再舉乙個中文的例子,漢字"嚴"如何轉化成base64編碼?

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

首先,"嚴"的utf-8編碼為e4b8a5,寫成二進位制就是三位元組的"11100100 10111000 10100101"。將這個24位的二進位制字串,按照第3節中的規則,轉換成四組一共32位的二進位制值"00111001 00001011 00100010 00100101",相應的十進位制數為57、11、34、37,它們對應的base64值就為5、l、i、l。

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

參考:

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