[基础算法]base64简介

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编码字符串结束。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理