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}

