base64编码

bese64的出现背景

互联网发展早起,电子邮件是最有效的应用。
而电子邮件的SMTP传输协议在早期,只能用于传送7位的ASCII码,而ASCII码就是基于英语设计的,对于非英语国家的文字等资源就无法发送。
为了解决这个问题,后来有了通用互联网邮件扩充MIME,增加了邮件的主体结构,定义了非ASCII码的编码传输规则,这就是Base64。

base64是什么

base64是基于64个可打印字符来表示二进制数据的解编码方式。主要作用为让内容在各网关间无错的传输。该64个可打印字符包括大写字母A~Z、小写字母a~z、数字0~9共56个字符,再加上”+“和”/“。

标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符

为解决此问题,可采用一种用于URL的改进Base64编码,它在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。
此外还有一些变种,它们将“+/”改为“_-”或“._”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。
 
base64怎么转换
Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。
(如下例中you被编码为eW91)
 

 

 
索引
对应字符
索引
对应字符
索引
对应字符
索引
对应字符
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转换表)

应用举例


将20221420转换为base64编码。

1.查询ASCII码表,分别找到2、0、2、2、1、4、2、4八个数字分别对应的ASCII值50、48、50、50、49、52、50、48。

2.将上述得到的ASCII值变形为对应的二进制数,并补足八位,得到0011001000110000001100100011001000110001001101000011001000110000

3.将其每6位分为一段并在每一段前加00,得00001100/00100011/00000000/00110010/00001100/00100011/00000100/00110100/00001100/00100011/00000000

4.将每一段其转换为对应的十进制书,得12/35/0/50/12/35/4/52/12/35/0

5.查询base64编码,转换为MjAyMjE0MjA=

posted @ 2022-09-14 19:42  yuop  阅读(46)  评论(0编辑  收藏  举报