Base64理解
Base64是網絡上最常見的用於傳輸8Bit字節碼的編碼方式之一,Base64就是一種基於64個可打印字符來表示二進制數據的方法。
採用a-z、A-Z、0-9、“+”、“/” 再加一個=做爲補充符號,總共65個可顯示字符。
特點:
從原來的24位變成32位 ,Base64轉換後的字符長度比原來大三分之一左右
轉換規則
1、每3個字節分爲一組,總共24個二進制位
2、將這24個二進制位分成四份,每份6個二進制位
3、在每份前面加上兩個00,變成32個二進制位,即4個字節
將這四個字節的每一個字節轉換成十進制,轉換後的十進制即對應Base64 碼錶中的下標。
Base64碼錶
0 |
A |
|
26 |
a |
|
52 |
0 |
1 |
B |
27 |
b |
53 |
1 |
||
2 |
C |
28 |
c |
54 |
2 |
||
3 |
D |
29 |
d |
55 |
3 |
||
4 |
E |
30 |
e |
56 |
4 |
||
5 |
F |
31 |
f |
57 |
5 |
||
6 |
G |
32 |
g |
58 |
6 |
||
7 |
H |
33 |
h |
59 |
7 |
||
8 |
I |
34 |
i |
60 |
8 |
||
9 |
J |
35 |
j |
61 |
9 |
||
10 |
K |
36 |
k |
62 |
+ |
||
11 |
L |
37 |
l |
63 |
/ |
||
12 |
M |
38 |
m |
|
|
||
13 |
N |
39 |
n |
|
|
||
14 |
O |
40 |
o |
|
|
||
15 |
P |
41 |
p |
|
|
||
16 |
Q |
42 |
q |
|
|
||
17 |
R |
43 |
r |
|
|
||
18 |
S |
44 |
s |
|
|
||
19 |
T |
45 |
t |
|
|
||
20 |
U |
46 |
u |
|
|
||
21 |
V |
47 |
v |
|
|
||
22 |
W |
48 |
w |
|
|
||
23 |
X |
49 |
x |
|
|
||
24 |
Y |
50 |
y |
|
|
||
25 |
Z |
51 |
z |
|
舉例
例如:
Wangbl
W 對應的ASCII值十進制爲87,二進制爲:0101 0111
a 對應的ASCII值十進制爲97,二進制爲:0110 0001
n 對應的ASCII值十進制爲110,二進制爲:0110 1110
g 對應的ASCII值十進制爲103,二進制爲:0110 0111
b 對應的ASCII值十進制爲98,二進制爲: 0110 0010
l 對應的ASCII值十進制爲1083,二進制爲:0110 1100
將Wangbl 每三個字節分成一組,總共分成兩組
一、先對第一組Wan進行轉換
1、將01010111、01100001、01101110這24位每6位分成一組,總共被分爲4組
2、分成4組後的二進制爲010101、110110、000101、101110
3、然後在4組的二進制前面加兩個0後變爲00010101、00110110、00000101、00101110
4、轉換成十進制爲21、54、5、46,對應上面的Base64碼錶得到V2Fu
二、將第二組gbl進行轉換
1、將0110 0111、0110 0010、0110 1100這24位每6位分成一組,總共被分爲4組
2、分成4組後的二進制爲011001、110110、001001、101100
3、然後在這4組的二進制前面補兩個0,結果爲00011001、00110110、00001001、00101100
4、轉換成十進制爲25、54、9、44,對應上面的Base64碼錶得到Z2Js
最終Wangbl用Base64加密之後的字符爲V2FuZ2Js
如果在分成的組不滿3個字節的情況。分爲兩種情況:一種是分組後其中一組只有兩個字節;另外一種情況是分組後其中一組只有一個字節。下面分別舉例說明
例如Wangb,每3個字節分成一組之後,得到的兩組爲Wan,gb,其中第二組gb只有兩個字節
一、先對第一組Wan進行轉換
1、將01010111、01100001、01101110這24位每6位分成一組,總共被分爲4組
2、分成4組後的二進制爲010101、110110、000101、101110
3、然後在4組的二進制前面加兩個0後變爲00010101、00110110、00000101、00101110
4、轉換成十進制爲21、54、5、46,對應上面的Base64碼錶得到V2Fu
二、對第二組gb進行轉換
1、將0110 0111、0110 0010這16位每6位分成一組,總共分成3組
2、分成3組後的二進制爲011001、110110、0010,最後一組前面補兩個0,後面也要補兩個0
3、補0後得到的24位二進制爲00011001、00110110、00001000
4、將這24位二進制轉換成十進制結果爲25、54、8,對應上面的Base64碼錶得到Z2I
5、最後一位補上一個”=“,得到的字符爲Z2I=
Wangb最終用Base64加密後的字符爲V2FuZ2I=
例如Wang,每3個字節分成一組之後,得到的兩組爲Wan,g,其中第二組g只有一個字節
一、先對第一組Wan進行轉換
1、將01010111、01100001、01101110這24位每6位分成一組,總共被分爲4組
2、分成4組後的二進制爲010101、110110、000101、101110
3、然後在4組的二進制前面加兩個0後變爲00010101、00110110、00000101、00101110
4、轉換成十進制爲21、54、5、46,對應上面的Base64碼錶得到V2Fu
二、對第二組g進行轉換
由於g只有一個字節,按照規則每6位分成一組,總共得到兩組,在末尾補上兩個”=“號
1、將0110 0111這8位每6位分成一組,總共被分爲兩組
2、分成2組後的二進制爲011001、11
3、每組前面補兩個0,最後一組後面補四個0,得到的結果爲00011001、00110000
4、將步驟3中得到的結果轉換成十進制結果爲:25、48,對應上面的Base64碼錶爲Zw
5、在末尾補上兩個”=“,結果爲Zw==
最終Wang通過Base64加密之後結果爲V2FuZw==
由於知識涉及的比較繁瑣,需要自己手動多轉換幾次,方便理解。