Base64轉換原理

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==

由於知識涉及的比較繁瑣,需要自己手動多轉換幾次,方便理解。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章