Base64
话不多说,直接上题(BUUCTF)
Base64 编码步骤
步骤 1:将数据按 3 字节分组
- 二进制数据按每 3 字节(24 位)为一组拆分
例如:字符串"Man"
的 ASCII 码为0x4D 0x61 0x6E
步骤 2:将 24 位拆分为 4 个 6 位块
- 3 字节(24 位) → 分割为 4 个 6 位块
示例:
0x4D (01001101)
+0x61 (01100001)
+0x6E (01101110)
合并为 24 位:010011 010110 000101 101110
对应 4 个 6 位值:19
、22
、5
、46
步骤 3:将 6 位值映射到 Base64 字符表
- 查表(索引 0~63 对应
A-Z,a-z,0-9,+,/
):
19→T
、22→W
、5→F
、46→u
结果:"TWFu"
步骤 4:处理不足 3 字节的情况
- 情况 1:剩余 1 字节(8 位)
- 补 4 个
0
位 → 生成 2 个 6 位块,后补==
例如:"A"
(0x41
)→010000 010000
→"QQ=="
- 补 4 个
- 情况 2:剩余 2 字节(16 位)
- 补 2 个
0
位 → 生成 3 个 6 位块,后补=
例如:"BC"
(0x42 0x43
)→010000 100100 001100
→"QkM="
- 补 2 个
Base64 解码步骤
- 移除填充的
=
,计算有效字符数 - 每个字符查表转换为 6 位二进制
- 合并所有 6 位块,按 8 位分组恢复原始数据
Base64 编码特点:
由 A-Za-z0-9+/= 组成的 64 个字符,通常末尾有 == 的就是 Base64
flag{THE_FLAG_OF_THIS_STRING}