什么是Base64?

2022年12月29日 1466点热度 0人点赞 0条评论

什么是Base64?

Base64编码是用于将二进制转换成对应的文本的技术。本章节就来了解它的编码规则。参考​​RFC-4648​​

Base64编码表:

Base64编码表

Base64编码表用了64个字符:A-Z、a-z、0-9、+ 、/,刚好是2的6次方,这也是Base64的由来,Base64每个字符用6个比特位来表示。最后还有一个=用作特殊用途,稍后会介绍,所以Base64编码表共有65个字符。

编码规则

首先将二进制数据按每6个比特位为一组编译成一个Base64的编码表中对应的一个字符。解码就是将Base64的字符依次还原回6位的比特位,以此得到原始的二进制数据了。

例子

编码:

1. 待编码字符:Man
2. 对应的二进制:M(01001101)a(01100001)n(01101110)
    即01001101 01100001 01101110
3. 按每6个比特位为一组来对二进制进行划分:010011 010110 000101 101110
4. 将6位进制编译成Base64对应的字符:T W F u,那么Man的Base64编码结果就是TWFu了。

解码:

解码就是上面过程的逆过程。按Base64编码表,将Base64字符解码出对应的6位二进制,进而得到原始的二进制数据。

例外

在编码的过程种有三种情况需要特殊处理一下。

1. 第一种:待编码的二进制只有24位,此时刚好能分成4组,编码结果就是4个字符,没有=号,
    如Man有24位二进制,结果就是TWFu。
2. 第二种:待编码的二进制只有16位,那么编码的结果就是3个字符跟上一个=号,如Ma:
    Ma的二进制:01001101 01100001
    分组结果:010011 010110 0001
    根据​​RFC-4648​​的规范,对于这种情况,将在最后用0补齐6位,得到:010011 010110 000100
    对应Base64的编码就是TWE,为了能在解码时能识别出最后有补齐的两个0,以便去掉,要跟上=作记号,
    所以Ma最终的Base64编码就是TWE=。
3. 第三种:待编码的二进制只有8位,Base64编码结果应该是两个字符,跟上两个=号,如M:
    M的二进制:01001101
    分组结果:010011 01
    根据​​RFC-4648​​的规范,对于这种情况,将在最后用0补齐6位,得到:010011 010000
    对应Base64的编码就是TQ,为了能在解码时能识别出最后有补齐的4个0,以便去掉,要跟上两个=作记号,
    所以M最终的Base64编码就是TQ==,

Base64的用途

Base64经常用来在不同环境下存储或传输数据。如在处理文本数据的场景中,用于表示、传输、存储一些二进制数据,包括 MIME 的电子邮件及 XML 的一些复杂数据,Base64也被用在URL(但有些特殊,请参考RFC-4648中的说明)、Cookie、网页中的图片等传输二进制数据。

路灯

这个人很懒,什么都没留下

文章评论