Base64¶
前置知识¶
二进制、十六进制
目标¶
掌握 Base64 加密原理,掌握加解密实例
What¶
Base64(基底64)是一种基于64个可打印字符来表示二进制数据的表示方法。
由于 \(log_2{64} = 6\),所以每 6 个比特为一个单元,对应某个可打印字符。
3 个字节相当于 24 个比特,对应于 4 个 Base64 单元,即 3 个字节可由 4 个可打印字符来表示。
实例¶
编码“Man”的结果为
TWFu
如果要编码的字节数不能被3整除,最后会多出1个或2个字节,
那么可以使用下面的方法进行处理:先使用0字节值在末尾补足,使其能够被3整除,然后再进行Base64的编码。
在编码后的Base64文本后加上一个或两个
=
号,代表补足的字节数。也就是说,当最后剩余两个八位(待补足)字节(2个byte)时,最后一个6位的Base64字节块有四位是0值,最后附加上两个等号;
如果最后剩余一个八位(待补足)字节(1个byte)时,最后一个6位的base字节块有两位是0值,最后附加一个等号。
例题,CSP-J 2021初赛¶
普及组初赛采用了相同题目的简化版本