对Base64算法的思考

如下内容是我学习过程中总结出来的一些点,写的不好的地方还希望大家及时指正,请大家多多关照,谢谢啦!

一、Base64能干嘛?定义是什么?作用是什么?

编码,加密,解密,传图片,数据传输,把图片转换成能够存储的形式,对字节的映射,流可视化,把二进制文件存储成文本传输。

定义:Base64是用文本表示二进制的编码方式,它使用4个字节的文本来表示3个字节的原始二进制数据。
它将二进制数据转换成一个如下所示64个可打印的字符组成的序列。

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。

作用:常用于网络传输,在某些基于文本的协议中,如果需要传输图片或者文件等,我们知道图片的存储格式是二进制数据,而非文本格式,我们必须将二进制的数据编码成文本格式,这时候Base64就派上用场了。
另外,由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。
Base64编码之后往往比原始数据要大,所以它并没有压缩数据。

规则

关于这个编码的规则:

①.把3个字符变成4个字符。

②每76个字符加一个换行符。

③.最后的结束符也要处理。

二、Base64是一种加密算法吗?

首先需要先了解加密是什么?

加密,指的是对数据进行转换以后,数据变成了另一种格式,并且除了拿到揭秘方法的人,没人能把数据转换过来。

然后需要了解Base64是什么?

Base64是一种数据编码格式,虽然是可逆的,但是他的编码方式是公开,无关于加密。

所以Base64不是加密算法。

Base64 也会经常用作一个简单的“加密”来保护某些数据,而真正的加密通常都比较繁琐

三、Base64的算法原理是什么?

1.世界上单字符最大的存储空间是 3个字节,24个bit。因为每个字节是8个bit,3*8=24bit。

        每一个空间的最小值是000000,最大值是111111。

       000000转换成十进制是0,111111转换成十进制是63,顾名思义,0-63是64个字符,

最基本的可见字符:‘A-Z’,‘a-Z’,‘0-9’,‘+’,‘/’组成了Base64编码表:

    而有一个原则是Base64要求把每3个8bit的字节转换为4个6bit的字节(3*8 = 4*6 = 24)。

(重点)如何将中文字符(面试屌爆为例)转换成Base64编码形式:

第一步:找到本机操作系统中的中文在字符编码表中对应的十进制数字。

怎么找:打开cmd命令窗口,输入chcp命令,会有如下结果:

可以在代码页对照表(网上能查到)中找到936对应的编码格式是GB2312:

第二步:然后在字符编码表中找到具体的字符“面试屌爆”对应的代号,然后转成十进制。

excel中有汉字转十进制的函数:=code()可以直接转换,例子:

第三步:然后将这些十进制的代号转换二进制,并重组,每6个bit为一组。

网上有在线进制转换,例子(后边剩余四位不足六位补0即可),:

第四步:把分组之后的结果转换成十进制,从Base64编码表中找到序号对应的可见字符。

例子:

最后,验证一下,“=”是结束符,然而如下验证会有乱码,是因为GB2312编码表中没有屌字,解决办法是把GB2312改成GBK即可。

猜你喜欢

转载自blog.csdn.net/qq_35030421/article/details/88716131