首先,Base64不是加密方式,而是一种数据的编码方式,只是在视觉上起到了‘加密’的功能而已。

为什么会有Base64?

Base64加密后的信息理论上会比原信息大三分之一左右,数据变大是不利于传输的,那什么优势让它依然被使用呢?

答案是因为早期的邮件传输协议SMTP只能传输可打印的ASCII码,那不支持传输的ASCII码只能换一种编码方式,用可传输的ASCII码部分来表示信息。

用了哪些字符码

虽然名叫base64,但实际用了65个字符,因为尾部用“=”表示结束,首先从0开始,到51位分别为大小写的字母a-z,52至61为数字0-9,另外加两个字符+/,正好64。
所以一个标准的base64编码数据就是大小写混合夹杂数字偶尔出现+/,结尾还会有“=”。

转换规则

转换规则如下:
转换规则

直接看字母的二进制数据,base64把原本的8Bit一组的数据从新按6Bit一组,然后把这新的6位二进制转换成十进制,再从10进制中找到对应的字符,组成了base64的编码。这样,无论什么数据,都能用上述64个字符表达出来,而这64个字符在所有的协议中都能顺利传输。

总结

base64以增加传输数据变大为代价,换取了传输的兼容性,然后仅仅在肉眼上实现了‘加密’。

前端接触最多的应用场景是用于表达图片二进制信息,把不是很大的图片用base64标识,直接放在html或css中,省去浏览器再发一个资源请求。