其他分享
首页 > 其他分享> > Base64编码的原理

Base64编码的原理

作者:互联网

  Base64编码可以对字符串(中英文),字节集进行编码转换,核心思想就是3个字节一组进行处理,到最后不足3个字节,用00代替,被代替的用字符=来表示。
下面举三个例子就能立马明白:

例1、 "Bug"(正好3个字节,最简单的一种):

1.先转化成ASCII编码,如下图

  

2.图中的为十六进制,我们需要把他们转换成二进制分别为:

  01000010,01110101,01100111
  注意这里二进制是8位的,前面的0不能少

3.我们把3个二进制合并一下变成

  010000100111010101100111

4.在把他们平均分割成四等份,四个新的二进制数诞生了,结果如下:

  010000/100111/010101/100111
  010000,100111,010101,100111

5.继续把这四个二进制数转换成十进制数,结果如下:

  16,39,21,39

6.根据Base64 编码表,查找相对应的字符即可,最后得出结果:QnVn

  

例2、 "算法"(正好4个字节,需要补全两个字节):

1.先转化成ASCII编码,如下图

  

2.前三个字节转换方法与例1相同,这里不再分析,直接得出结果y+O3,我们看下最后一个字节A8,补全成3字节如下:

  A8,00,00

3.把他们转换成二进制分别为:

  10101000,00000000,00000000

4.合并后分割成四等份

  101010 000000 000000 000000
  42,0,0,0

5.由于我们在后面补全了两个字节,所以后面必须得有两个=号。42与第一个0可以去表中查询,后面的两个0可以理解成异常用=表示,得出结果qA==

6.最终结果:y+O3qA==

例3、 一张GIF图片(选取一张特别小的图片研究,最后需补全一个字节):

  

1.前面33个字节直接略过,得出结果:R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQB

2.剩下两个字节补全成3个字节如下:

  00,3B,00

3.把他们转换成二进制数,结果如下:

  00000000,00111011,00000000

4.合并后分割成四等份

  000000 000011 101100 000000
  0,3,44,0

5.由于最后补全了一个字节,所以最后一位为=号,前面三位去表中查询,得出结果ADs=

6.最终结果:R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=

补充:(反编码还原)

1.这里就举一个例子,逆着编码的思想来。以"T0s="为例

从表中查询对于编码为:
19,52,44,00

2.转换为二进制数如下:

10011,110100,101100,000000

3.合并后分成三等份并转换为十六进制ASCII码:

1001111 01001011 00000000
4F,4B

4.由于补全了一位,最后就前两个ASCII码有效,最终结果如下:

标签:编码,00,补全,000000,二进制,Base64,原理,字节
来源: https://www.cnblogs.com/YXGust/p/16611570.html