读取 YAML 密钥并转为字符串方法
本文介绍了如何从YAML文件中读取由cryptography.fernet生成的加密密钥,并将其转换为字符串格式。由于YAML默认将密钥读取为二进制数据,因此我们需要使用base64模块进行解码,从而获得原始的字符串形式的密钥。

从 YAML 文件读取 Fernet 加密密钥时,由于 YAML 库的默认行为,密钥通常会被表示为二进制数据。这在使用密钥进行解密操作时可能会导致问题,因为 Fernet 通常需要字符串格式的密钥。为了解决这个问题,我们需要将从 YAML 文件读取的二进制密钥转换回字符串格式。
以下是一种实现方法,结合了 YAML 读取和 Base64 解码:
import yaml
import base64
# 从 YAML 文件读取数据
with open("credentials.yml", 'r') as file:
yaml_data = yaml.safe_load(file) # 推荐使用 safe_load 避免潜在的安全风险
# 获取二进制格式的加密密钥
binary_key = yaml_data['encryption_key']
# 使用 Base64 解码将二进制密钥转换为字符串
string_key = base64.b64encode(binary_key).decode('utf-8')
# 现在 string_key 包含了字符串格式的加密密钥
print(string_key)代码解释:
- 导入必要的模块: yaml 用于读取 YAML 文件,base64 用于解码 Base64 编码的二进制数据。
- 读取 YAML 文件: 使用 yaml.safe_load() 函数安全地读取 YAML 文件中的数据。safe_load() 比 yaml.load() 更安全,可以防止执行任意代码的风险。
- 获取二进制密钥: 从 YAML 数据中提取 encryption_key,此时它是一个二进制字符串。
- Base64 解码:
- base64.b64encode(binary_key): 对二进制密钥进行 Base64 编码。
- .decode('utf-8'): 将 Base64 编码后的字节串解码为 UTF-8 字符串。
注意事项:
- 安全性: 加密密钥是敏感信息,请确保安全地存储和处理。避免将密钥硬编码到代码中,而是从安全的环境变量或配置文件中读取。
- YAML 安全加载: 始终使用 yaml.safe_load() 而不是 yaml.load() 来加载 YAML 文件,以避免潜在的安全漏洞。
- 编码格式: 确保在解码时使用正确的编码格式(通常是 UTF-8)。
总结:
通过使用 base64 模块,我们可以轻松地将从 YAML 文件中读取的二进制格式的 Fernet 加密密钥转换为字符串格式,从而方便后续的解密操作。记住,安全性至关重要,请务必妥善保管您的加密密钥。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















