Base64到底是一个什么东西?它有什么用?它是怎么来的?
世界上几乎所有的东西,都不会无中生有。Base64也一样。
我们知道在计算机中任何数据都是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。
Base64的初衷,是为了满足电子邮件中不能直接使用非ASCII码字符的规定因为早期的一些邮件服务器只支持文本信息,不支持二进制信息和文件。而base64编码后的结果都是ASCII低128位,也就是都是纯文本的,适合用电子邮件来传送二进制数据。这就是Base64的由来。后来它就演变成了网络上常见的用于传输8bit字节数据的一种编码方式之一
最常用的应用场景就是在http协议上传输较长的文本信息。它是将用户输入的二进制数据,打包成一种安全格式,将其作为http首部字段的值发送出去,而无须担心其中包含会破坏HTTP分析程序的冒号、换行符或二进制值。BASE64 编码与将二进制数据文本化的uuencode和binhex标准在本质上是类似的,但是空间效率更高。
Base64的原理很简单,首先,准备一个包含64个字符的数组:
[‘A’, ‘B’, ‘C’, … ‘a’, ‘b’, ‘c’, … ‘0’, ‘1’, … ‘+’, ‘/’]
然后,对二进制数据进行处理,每3个字节一组,一共是3x8=24bit,划为4组,每组正好6个bit: