base64是一种用64个字符来表示任意二进制数据的方法。
base 64编码可以将任意一组字节转换为较长的常见文本字符序列,从而可以合法地作为首部字段值。base 64编码将用户输入或二进制数据,打包成一种安全格式,将其作为HTTP首部字段的值发送出去,而无须担心其中包含会破坏HTTP分析程序的冒号、换行符或二进制值。
官方文档地址:RFC3548
base 64编码过程
base 64编码将一个8位子节序列拆散为6位的片段,并为每个6位的片短分配一个字符,这个字符是base 64字母表中的64个字符之一。这64个字符中包括大小写字母、数字、+和/,同时还包括了特殊字符=。具体内容如下:
Value
Encoding
Value
Encoding
Value
Encoding
Value
Encoding
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
(pad) =
—
15
P
32
g
49
x
—
—
16
Q
33
h
50
y
—
—
以“Hello!”为例,他的ASCII对应关系如下:
{:width=”50%”}
可知 Hello! 的Base64编码结果为 SGVsbG8h ,原始字符串长度为6个字符,编码后长度为8个字符,每3个原始字符经Base64编码成4个字符,编码前后长度比4/3,这个长度比很重要 – 比原始字符串长度短,则需要使用更大的编码字符集,这并不我们想要的;长度比越大,则需要传输越多的字符,传输时间越长。Base64应用广泛的原因是在字符集大小与长度比之间取得一个较好的平衡,适用于各种场景。
Base64编码是每3个原始字符编码成4个字符,如果原始字符串长度不能被3整除,需要使用0值来补充原始字符串:
{:width=”50%”}
标准Base64编码通常用 = 字符来替换最后的 A,即编码结果为 SGVsbG8hIQ==。因为 = 字符并不在Base64编码索引表中,其意义在于结束符号,在Base64解码时遇到 = 时即可知道一个Base64编码字符串结束。
发表回复