feling.net/rank/base64-06.md

1.8 KiB
Raw Permalink Blame History

title layout keywords date source description
你知道base64编码解码吗 pages
base64图片
base64编码解码
2020-05-04 艾乎网 但base64的广泛使用也带了一些不好的影响

Base64编码之所以称为Base64是因为其使用64个字符来对任意数据进行编码同理有Base32、Base16编码。

通俗来说所谓base64就是基于ASCII码的64个可见字符子集的一种编码方式。

Base64编码解码有分组替换结尾处理三种方式要点。

对于解码其实就是编码的逆过程将得到的base64编码信息分为4字节一组由4个字符值反推出其索引然后将四个索引的低6bit共24bit拼接成完整的三个字节得到24bit数据流可能还需要一步将3个字节的ASCII字符再算出来

需要注意的是在编程时由于逆向解码对于已知字符求其索引需要进行整个表的遍历若需要解密的数据较大则其效率是相当低的。因此我们可以做一个逆向索引的表该表以64个字符的ASCII作为索引index而以正向索引表的索引作为逆向索引表的值。

在表示图片时通常会使用base64编码。比如网页中的小图片使用baase64编码后以文本形式直接嵌入 html 文件中,可以有效减少加载网页时的网络请求。

但base64的广泛使用也带了一些不好的影响一些前端框架中默认将图片、甚至是所有类型的文件都转换成了base64字符串。由于base64编码效率的问题尤其在传输大文件的时候导致网络请求的数据量大大增加。还减少了刚入门、水平较差的前端工程师们接触完整网络协议的机会只会用字符串调接口不了解http协议中传输文件、二进制数据的部分。