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

由于知识涉及的比较繁琐,需要自己手动多转换几次,方便理解。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

無昂博奥

测试下大赏功能,请勿大赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值