导言
base64算法很多人都听过,甚至可能你都不知道它的原理是什么都可以直接在网上搜出一大堆相关的资料进行解密计算,接下来这篇文章将用通俗易懂的话告诉你base64算法到底是什么,该如何解密。
base64算法是什么?
它是将平时我们写的字符转变成ASCII码,然后从前往后每6位组成一个新的数,再由这个数从索引表中找到对应的字符进行替换。这么说可能还不是很清晰,我们看下面这幅图,并回头对应着再看一遍是不是明白了?
索引表
可能还有几个点不明白,比如什么是索引表,其实很多接触过base64算法的人应该都见过那个ABCDEFG等等一大串字母加数字+\什么的东西,其实那个就是索引表,从头到尾一共64个,正好对应了它的名字base64。从索引表头开始索引依次为0到63,一共64个。通过将每个ASCII码拆成6位(想想6位ASCII码对应多少数),这样就可以将每三个字符变成四个字符了,是不是很神奇?
变种
既然我们知道了原理,那可不可以修改索引表使其按照我们的方法进行编码,答案是肯定的。那么如果那样做的话该如何进行解密呢?其实通过上面的图我们会发现即使我们修改了索引表的内容,真正的文本所对应的索引没有变(再回头看看那个图,我们修改的只是base64编码那一栏)。比如上面的M所对应的索引为19,对应于T,我们可以把它修改成对应W,但是其真正的索引不变,还是19,这样我们可以通过base64编码后的字符和索引表得到对应的索引号。
其实到这一步,继续往上面推就可以得到相应的文本了,但是我们有更简单的方法,因为标准的base64编码的解码方案已经公布了,(相当于从索引到文本这一步已经为我们写好了)这样我们再将得到的索引号按照标准的base64编码成密文,再用标准的base64解码函数进行解码,这样不需要自己运算就可以得到相应的文本信息了。
这也就是你可以在网上看到很多base64用python解码,为什么要转化成标准索引表对应的base64的原因。