CTF 编码入门|Base64 进制转换 前言在 CTF 密码学基础题型中Base64 是仅次于 ASCII 编码的高频考点常搭配十六进制Hex嵌套考察。本题是典型的「十六进制转字节 → Base64 编码」复合题型全程仅使用 Python 标准库即可完成非常适合刚入门 CTF 的新手练习进制流转、字节与编码转换逻辑。本文结合完整解题流程、代码拆解、原理拓展整理成可直接发布的技术博客。一、题目完整信息基础信息题目名称Base64题型密码学 - 基础编码转换分值10 分难度入门级题目原文描述Base64 是应用极广的编码方案它能将二进制数据映射为由 64 个标准 ASCII 字符组成的字符串。单个 Base64 字符存储 6bit 二进制数据每 4 个 Base64 字符可完整编码 3 个 8bit 字节。Base64 广泛应用于网页场景图片等二进制资源可直接嵌入 HTML、CSS 文本中传输。 解题要求给出一段十六进制字符串先将十六进制解码为原始字节再对字节进行 Base64 编码最终得到 flag。题目给定 Hex 密文字符串plaintext72bca9b68fc16ac7beeb8f849dca1d8a783e8acf9679bf9269f7bf官方 Python 提示导入标准库base64使用base64.b64encode()完成编码必须先把十六进制字符串还原为 bytes 字节流再执行 Base64 编码。二、前置核心知识点1. 十六进制Hex与字节转换逻辑十六进制每 2 个字符对应 1 个原始字节8bitPython 中使用bytes.fromhex()可以直接将 Hex 字符串转为原始二进制 bytes 对象是本题第一步核心操作。 示例bytes.fromhex(6162)会得到字节bab。2. Base64 编码底层原理把原始二进制数据按 6bit 为一组重新划分每组 6bit 映射到预设 64 字符字母表A-Z,a-z,0-9,,/原始字节长度无法被 3 整除时末尾补充填充符作用二进制数据转纯 ASCII 文本方便网络传输Base64 只是编码不是加密不存在密钥。3. Python base64 标准库核心函数base64.b64encode(data)输入 bytes 字节输出 Base64 编码后的 bytes.decode(utf-8)将编码后的 bytes 转为可读字符串配套反向解码函数base64.b64decode()本题用不到拓展记忆。三、完整解题思路 可直接运行 Python 脚本解题流程梳理接收题目给出的十六进制字符串使用bytes.fromhex()将 Hex 字符串还原为原始二进制字节调用base64.b64encode()对字节流做 Base64 编码将编码结果从 bytes 转为 utf-8 字符串输出得到 flag。完整解密代码python运行# 导入Python内置base64标准库无需额外安装 import base64 # 题目提供的十六进制字符串 hex_str 72bca9b68fc16ac7beeb8f849dca1d8a783e8acf9679bf9269f7bf # 步骤1十六进制字符串 转换为原始字节数据 raw_bytes bytes.fromhex(hex_str) # 步骤2对原始字节进行Base64编码输出bytes类型 b64_result base64.b64encode(raw_bytes) # 步骤3将bytes转为可读字符串 flag b64_result.decode(utf-8) # 打印最终flag print(解密编码得到Flag, flag)代码逐行拆解说明import base64加载 Python 自带 Base64 工具库CTF 编码题必备定义变量hex_str存储题目给出的完整十六进制密文bytes.fromhex(hex_str)核心转换步骤把文本格式的十六进制转为计算机可处理的二进制字节流是本题最容易遗漏的前置操作base64.b64encode(raw_bytes)标准 Base64 编码函数只接收 bytes 参数不能直接传入字符串.decode(utf-8)编码输出结果是带b标识的字节解码为普通字符串方便复制提交打印输出最终 flag。四、程序运行结果与验证控制台输出执行代码后直接输出plaintext解密编码得到Flag crypto/Base64EncodingisWebSafe/分步校验过程Hex 转字节72bca9b68fc16ac7beeb8f849dca1d8a783e8acf9679bf9269f7bf→ 原始二进制字节Base64 编码字节流生成标准 Base64 文本文本格式即为平台要求提交的 flag和题目底部给出的标准答案完全匹配。五、Base64 题型常见变形拓展掌握本题流程后可以应对 CTF 中绝大多数 Base64 复合编码题常见变形如下反向题型Base64 解码再转十六进制流程b64decode() → bytes → bytes.hex()多层嵌套编码Hex→Base64→Base64 二次编码需要循环调用b64encode()多次处理URL 安全 Base64 变体编码字符、/替换为-、_库函数base64.urlsafe_b64encode()处理带填充 / 无填充 Base64部分题目会去掉末尾解码前需要手动补齐填充符。六、新手学习总结区分「编码」与「加密」Base64、Hex 都只是数据格式转换没有加密强度不能用于数据保密固定解题模板Hex ↔ Bytes ↔ Base64 三者互相转换是 CTF 编码题核心套路避坑重点base64.b64encode()仅接收 bytes 类型字符串必须先转字节再处理这是新手最常踩的报错点工具记忆Python 内置base64、binascii两个库可以覆盖 90% 基础进制转换题型无需在线工具即可本地解题。