美文网首页
Base64编码流程

Base64编码流程

作者: 康小曹 | 来源:发表于2021-11-12 15:30 被阅读0次

    1. Base64简介

    Base64 是一种 编码方式 ,常用于传输 8bit(一字节) 字节码。

    计算机中所有的数据都是以 0 和 1 的二进制来存储,而所有的文字都是通过 ascii 表转化而来进而显示成对应的语言。但是 ascii 表中存在许多不可见字符,这些不可见字符在数据传输时,有可能经过不同硬件上各种类型的路由,在转义时容易发生错误。所以规定了 64 个可见字符(a-z、A-Z、0-9、+、/),通过 base64 转码之后,所有的二进制数据都是使用这 64 个可见字符来表示,传输的时候就不会因为不可见字符转义错误的情况;

    2. Base64编码流程

    1. 取原数据

    将原数据按照 3 个字节取为一组,即为 3x8=24 位

    1. 分组

    将 3x8=24 的数据分为 4x6=24 的数据,也就是分为了 4 组;之所以按 6 位进行分组,是因为 6 个比特位的取值范围是 0~63,正好表示可以表示 Base64 中的 64 个可见符号;

    1. 高位补0

    将 4 个组中的数据分别在高位补上 2 个 0 ,也就成了 8x4=32,所以原数据增大了三分之一

    1. 补位

    如果要编码的二进制数据不是 3 的倍数,最后会剩下 1 个或 2 个字节怎么办,Base64 会在末尾补足 0 后,再在编码的末尾加上 1 个或 2 个 = 号,表示补了多少个编码,解码的时候,会自动去掉;

    1. 转码

    根据 base64 编码表对数据进行转换;

    为什么需要高位补 0:

    因为 base64 产生的基础是避免在传输 8 Bit 字节码数据时,不可见字符的可能产生的一些错误。因为字符是以 8 位为一个字节来处理,补零只是为了方便当前的处理规则,如果是 6 位,那么又需要做适配或者更改当前的处理规则;

    3. 举个栗子🌰

    举个栗子:Man最后的结果就是TWFu。

    Base 64编码流程

    步骤:

    1. M-a-n 在 Ascii 表中分为为 77-97-110,其对应的二进制位如上图所示;
    2. 将 3 * 8 个二进制分组为 4 * 6 个组;
    3. 在 4 个组的二进制位的高位补 0,不会对实际数值产生影响;
    4. 转码:查询19-22-5-46 对应的字符为:TWFu;

    Base64编码表如图所示:

    Base64编码表

    4. 补位的例子

    如果要编码的字符不是 3 的倍数,那么就需要补位,同理,以 Ma 和 M 为例,分别演示补位 1 个和两个的情况:

    Ma 的 Base64 流程:

    Ma编码流程

    如上图所示,最后补足了两个 0 ,查询编码表后得到 Ma 的编码为:TWE

    但是 Base64 编码之后都是 4 的倍数,比如上一个例子中的 Man 编码之后得到的是 4 个 Base64 字符,所以这里 TWE 要补一个 = ,在解码的时候会直接去掉。

    最终 Ma 的 Base64 编码为:TWE=

    使用 Base64 编码工具验证:

    Base64

    同理,如果只对 M 编码,则流程为:

    M编码流程

    如上最终得到 M 的编码为:TQ,补足到 4 位,得到最终结果:TQ==

    总结:Base64 编码的结果中,最多存在两个 =

    相关文章

      网友评论

          本文标题:Base64编码流程

          本文链接:https://www.haomeiwen.com/subject/bgqozltx.html