base64编码

什么是base64?
  base64是网络上最常见的用于传输8Bit字节码的编码方式之一,base64就是一种基于64个可打印字符来表示二进制数据的方法。
  可打印字符包括大小写字母(A-Z,a-z)、数字(0-9)、加号(“+”)、正斜杠(“/”)、外加补全符号(“=”)。
  base64只是一种编码转换,使用base64的初衷是为了方便把含有不可见字符串的信息用可见字符串表示出来,方便网络传输和显示,因为不同设备对不可见字符处理可能有差异。
base64编码及处理方式:
  base64编码要求把3个8位字节(3 * 8 = 24位)编码成4个6位的字节(4 * 6 =  24位),之后在每个6位字节前面,补充两个0,形成4个8位字节的形式(取值范围在0~63),由于2^6次方等于64,所以每6个位组成一个单元。
  对于某个可打印的字符,当原始数据不是3的整数倍时:
    最后剩下一个输入字节时,在编码后面添加两个“=”
    最后剩下两个输入字节时,在编码后面添加一个“=”
    数据可以被3整除,就不需要添加数据。
base64编码规则:
  第一个字节,根据源字节的第一个字节处理。
    规则:源第一字节右移两位,去掉低2位,高2位补零。
      既:00 + 高6位
  第二个字节,根据源字节的第一个字节和第二个字节联合处理。
    规则:第一个字节高6位去掉然后左移四位,第二个字节右移四位
      即:源第一字节低2位 + 源第二个字节高4位
  第三个字节,根据源字节的第二个字节和第三个字节联合处理,
    规则:源第二个字节去掉高4位并左移两位(得高6位),第三个字节右移6位并去掉高6位(得低2位)
      即:源第二个字节低4位 + 源第三个字节高2位
  第四个字节
    规则:源第三字节去掉高2位即可
base64编码编程思维:
  第一个字符通过右移2位获得第一个目标字符的base64表位置,根据这个数值取到表上相应的字符,就是第一个目标字符。
  然后将第一个字符与0x03(00000011)进行与(&)操作并左移4位,接着第二个字符右移4位与前者相或(|),即获得第二个目标字符。
  再将第二个字符与0x0f(00001111)进行与(&)操作并左移2位,接着第三个字符右移6位与前者相或(|),获得第三个目标字符。
  最后将第三个字符与0x3f(00111111)进行与(&)操作即获得第四个目标字符。
  
  原文的字节数量应该是3的倍数啊,如果这个条件不能满足的话,那该怎么办呢?
  原文剩余的字节根据编码规则继续单独转(1变2,2变3;不够的位数用0补全),再用=号补满4个字节。
posted @ 2017-09-22 10:45  yipingg  阅读(366)  评论(0)    收藏  举报