所谓 Base64 编码就是从 ASCII 码表中选取 64 个可打印字符(A-Za-z0-9+/)作为基本字符集对其它字符进行编码转换。加上作为填充的 “=” 实际上是 65 个字符。
编码原理
第一步,将每三个字节作为一组,一共是 24 个二进制位。
第二步,将这 24 个二进制位分为四组,每个组有 6 个二进制位。
第三步,在每组前面加两个00,扩展成 32 个二进制位,即四个字节。
第四步,对照 Base64 表,得到扩展后的每个字节的对应符号,这就是 Base64 的编码值。
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 算法的复杂程度要小,效率要高相对较高。
- Base64 编码的主要的作用不在于安全性,而在于让内容能在各个网关间无错的传输。
- 在计算机中任何数据都是按 ASCII 码存储的,而 ASCII 码的 128~255 之间的值是不可见字符。而在网络上交换数据时,比如说从 A 地传到 B 地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个 Base64 编码,统统变成可见字符,这样出错的可能性就大降低了。
劣势
- 用于邮件
- HTML内嵌图片
- URL 传参