跳到主要内容

base64

Base64 将任意字节转换为 ASCII 字符,便于放进 JSON、HTML、邮件或 URL。它是编码,不是加密,任何人都可以还原原文。

基本编码与解码​

import base64

raw = "你好,Python".encode("utf-8")
encoded = base64.b64encode(raw)
decoded = base64.b64decode(encoded)
print(encoded) # bytes
print(decoded.decode()) # 你好,Python

API 接收和返回 bytes。文本先按明确字符集(通常 UTF-8)编码,解码后再转回字符串。Base64 会增加约三分之一体积,并在末尾使用 = 补齐。

URL 安全与校验​

token = base64.urlsafe_b64encode(b"id=42?/+")
print(base64.urlsafe_b64decode(token))

try:
base64.b64decode("not base64!", validate=True)
except ValueError:
print("格式非法")

urlsafe_b64encode() 将 +、/ 替换为 -、_,适合 URL 和文件名,但仍可能包含 =。JWT 常去掉补位符,解码前应按长度补回:data += b"=" * (-len(data) % 4)。

文件与命令行接口​

import base64

with open("photo.png", "rb") as file:
text = base64.b64encode(file.read()).decode("ascii")

标准库还提供 base64.encode(input, output) 和 decode() 处理文件流。不要把大文件一次性读入内存,可分块处理或使用流式接口。

安全边界​

Base64 不提供机密性、完整性或身份认证。密码不能用 Base64 保存;需要密码哈希使用专用密码哈希方案,需要加密使用成熟的加密库。解码外部输入时限制大小并校验格式,避免内存和解析风险。