Base64和Base64url都是以字符串形式编码二进制数据的方法。你可以阅读base64的理论
here
+
,
/
,和
=
+
具有
-
和
具有
_
. 尾随填充字符
可以在不需要的时候消除,但是在URL中它很可能是
%
URL编码。然后编码的数据就可以毫无问题地包含在URL中。
以下是差异图表:
Index Base64 Base64Url
0 A A
1 B B
2 C C
3 D D
4 E E
5 F F
6 G G
7 H H
8 I I
9 J J
10 K K
11 L L
12 M M
13 N N
14 O O
15 P P
16 Q Q
17 R R
18 S S
19 T T
20 U U
21 V V
22 W W
23 X X
24 Y Y
25 Z Z
26 a a
27 b b
28 c c
29 d d
30 e e
31 f f
32 g g
33 h h
34 i i
35 j j
36 k k
37 l l
38 m m
39 n n
40 o o
41 p p
42 q q
43 r r
44 s s
45 t t
46 u u
47 v v
48 w w
49 x x
50 y y
51 z z
52 0 0
53 1 1
54 2 2
55 3 3
56 4 4
57 5 5
58 6 6
59 7 7
60 8 8
61 9 9
62 + -
63 / _
= (optional)
下面我将引用标准中的定义。
4.基64编码
以下对基64的描述源自
3
, [4], [5],
八位字节的一种形式,允许同时使用上下位和下下位
使用US-ASCII的65个字符子集,使6位
用于表示特殊的处理功能。)
编码过程将输入位的24位组表示为
输出4个编码字符的字符串。从左到右
输入组。然后将这24位视为4个串联
6位组,每个组翻译成一个字符
以64个字母为基数。
每个6位组用作64个可打印数组的索引
Table 1: The Base 64 Alphabet
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
如果可用位少于24位,则执行特殊处理
总是在数量的末尾完成。输入少于24时
位在输入组中可用,值为零的位相加
最后,使用“=”字符执行数据。自
(1) 编码输入的最后一个量是
24
位;这里,编码输出的最后一个单位是整数
不带“=”填充的4个字符的倍数。
这个
编码输出的最终单位是两个字符,后跟
两个“=”填充字符。
(3) 编码输入的最终量正好是16位;在这里,
这个
编码输出的最终单位是三个字符,后跟
5.使用URL和文件名安全字母表的Base 64编码
已在[12]中使用。
有人建议用“~”作为替代字母
第63个字符。因为“~”字在英语中有特殊的含义
字符是“.”,但某些文件系统环境不允许
在文件名中有多个“.”,从而使“.”字符
填充字符“=”通常用百分比编码
避免跳过填充物;见第3.2节。
不应视为与“base64”编码相同
不应仅称为“base64”。除非澄清
否则,“base64”是指上一节中的base64。
此编码在技术上与前一个相同,只是
对于62:nd和63:rd字母字符,如表2所示。
Table 2: The "URL and Filename safe" Base 64 Alphabet
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 - (minus)
12 M 29 d 46 u 63 _
13 N 30 e 47 v (underline)
14 O 31 f 48 w
15 P 32 g 49 x
16 Q 33 h 50 y (pad) =