如下内容是我学习过程中总结出来的一些点,写的不好的地方还希望大家及时指正,请大家多多关照,谢谢啦!
一、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即可。