Besa64是一种加料值位加密法,那为什么叫做Base64呢?因为无论明文是什么(比如汉字,特殊符号等),加密后的密文都会变成字母A-Z,a-z,0-9,+,/这64个字符,被他加密后体积一般会变成原来的四分之三。
前端大部分图片都是可以转成Base64编码的图片,这样可以减少一个http请求,但是如果把大图片编码到html/css中,会造成后者体积明显增加,明显影响网页打开速度。如果用外联图片的话,图片可以在页面渲染完成后继续加载,不会造成阻塞。如果Base64是被编码到CSS/JS中,是可以缓存的,因为CSS/JS文件可以缓存。使用Base64的另一个弊端是IE的兼容性问题。IE以下不支持data url,IE8开始支持data url,却有大小限制。
还有一个问题是,如果构建工具比较落后,手动插入Base64是很蛋疼的,编辑器会卡到哭。
Base64编码原理
Base64的索引表,字符选用了'A-Z、a-z、0-9、+、/'64个可打印字符。数值代表字符的索引,这个是标准Base64协议规定的,不能更改。64个字符用6个bit位就可以全部表示,一个字节有8个bit位,剩下2个bit位就浪费掉啦,这样就不得不牺牲一部分空间啦。这里需要弄明白的就是一个Base64字符是8个bit,但是有效部分只有右边的6个bit,左边两个永远是0.
那么怎么用6个有效bit来表示传统字符的8个bit呢?8和6的最小公倍数是24,也就是说3个传统字符可以由4个Base64字符来表示,保证有效位数是一样的,这样就多了1/3的字节数来弥补Base64只有6个有效bit的不足。
Base64编码可能有点奇怪,因为大多数的编码都是由字符串转化成二进制的过程,而从二进制转成字符的过程称为解码。而Base64的概念就恰好反了,由二进制转到字符称为编码,有字符到二进制称为解码。
Base64编码主要用于传输,存储,表示二进制等领域,还可以用来加密,单这种加密比较简单,只是一眼看上去不知道内容罢了,当然也可以对Base64的字符序列进行定制来进行加密。
网友评论