0


什么是Base64?

什么是Base64?

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

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位二进制,进而得到原始的二进制数据。

例外

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

  • 第一种:待编码的二进制只有24位,此时刚好能分成4组,编码结果就是4个字符,没有=号,如Man有24位二进制,结果就是TWFu。
  • 第二种:待编码的二进制只有16位,那么编码的结果就是3个字符跟上一个=号,如Ma: Ma的二进制:01001101 01100001 分组结果:010011 010110 0001 根据​​RFC-4648​​的规范,对于这种情况,将在最后用0补齐6位,得到:010011 010110 000100 对应Base64的编码就是TWE,为了能在解码时能识别出最后有补齐的两个0,以便去掉,要跟上=作记号,所以Ma最终的Base64编码就是**TWE=**。
  • 第三种:待编码的二进制只有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、网页中的图片等传输二进制数据。

标签: 服务器 网络 安全

本文转载自: https://blog.csdn.net/weixin_40763897/article/details/126314371
版权归原作者 WongKyunban 所有, 如有侵权,请联系我们删除。

“什么是Base64?”的评论:

还没有评论