Base64加解密

Base64实际上只能算作编码算法,而非加密算法(并没有**)。
Base64编码实质上只是实现了二进制到文本数据的转化。对于非二进制文本则是需要先转换成二进制(字符集,如ASCII码,Unicode码,GB2312码等,当然也可以是你自己定义的字符集),再对转换之后的二进制进行Base64算法处理。

Base64算法处理

  1. 以3个字节(24bit)为单位,每6bit一组,一共分为4组。
  2. 每组6bit在高位填00,构成1字节,共4字节。
  3. 算出4字节各自对应的十进制,并查找Base64算法的的表,找到对应十进制数字的字符。

第一步,之所以是以3个字节为单位进行Base64处理,是因为Base64将字符编码成64个可打印字符,而64个不同字符用6bit的二进制就可以表示出来,但是计算机中字符都是1字节(8bit)为基础的,而3字节(24bit)正好是6和8的最小公倍数,即3个8bit正好可以被分为4个6bit,少于24bit的都不能被分为整数组6bit。

第二步,每组6bit高位添加2位的0,这也是因为计算机中8bit为基础,存储的时候也是要存储8bit的,所以需要将6bit扩充到8bit,高位填0,不影响十进制数值。

注:为什么要先将8bit划分为6bit,再将6bit扩充到8bit,看起来好像是白费功夫啊。实际上,将8bit分成6bit是为了查Bash64的转换表,如果高于6bit,那么表上就没有对应的字符了;而后面将6bit再变回8bit,是因为我们需要将其存储到计算机中,而计算机是8bit为基础存储数据的,所以我们需要补齐8bit。
Base64加解密

Base64将3个任意字符编码为4个可打印字符,一定程度上造成了浪费。