跳转至

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文本后加上一个或两个=号,代表补足的字节数。

也就是说,当最后剩余两个八位(待补足)字节(2个byte)时,最后一个6位的Base64字节块有四位是0值,最后附加上两个等号;

如果最后剩余一个八位(待补足)字节(1个byte)时,最后一个6位的base字节块有两位是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