所谓 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 编码,统统变成可见字符,这样出错的可能性就大降低了。

劣势

  • Base64 将三个字节转化成四个字节,因此 Base64 编码后的文本,会比原文本大出三分之一左右。

    应用

  1. 用于邮件
  2. HTML内嵌图片
  3. URL 传参