跳转至

Base64

前置知识

二进制、十六进制

目标

掌握 Base64 编码原理,掌握编码和解码实例(Base64 不是加密算法)

What

Base64(基底64)是一种基于64个可打印字符来表示二进制数据的表示方法。

由于 \(log_2{64} = 6\),所以每 6 个比特为一个单元,对应某个可打印字符。

3 个字节相当于 24 个比特,对应于 4 个 Base64 单元,即 3 个字节可由 4 个可打印字符来表示。

实例

编码“Man”的结果为TWFu

img

如果要编码的字节数不能被3整除,最后会多出1个或2个字节,

那么可以使用下面的方法进行处理:先使用0字节值在末尾补足,使其能够被3整除,然后再进行Base64的编码。

在编码后的Base64文本后加上一个或两个=号,代表补足的字节数。

也就是说,当最后剩余 1 个字节时,编码出 2 个 Base64 字符,并附加两个等号;

当最后剩余 2 个字节时,编码出 3 个 Base64 字符,并附加一个等号。补入的 0 位只用于分组,= 是填充标记。

img

例题,CSP-J 2021初赛

普及组初赛采用了相同题目的简化版本

image-20240614173303679

image-20240614173321223

image-20240614173336109

image-20240614173347342

例题,CSP-S 2021初赛

image-20240614172947662

image-20240614172925704

image-20240614173004926

image-20240614173100802

参考

维基百科-Base64