Base64 编码解码:原理详解与在线工具使用

工具 次阅读

什么是 Base64 编码?

Base64 是一种将二进制数据(如图片、文件)转换为纯文本字符串的编码方式。它使用 64 个可打印字符(A-Z、a-z、0-9、+、/)来表示任意二进制内容,因此得名 Base64。

Base64 编码后的内容可以安全地在只接受文本的系统中传输,例如电子邮件、JSON API、HTML 属性等。

Base64 的常见用途

  • 邮件附件:MIME 协议用 Base64 编码二进制附件,使其能通过纯文本邮件系统传输
  • 图片内嵌 HTML/CSSsrc="data:image/png;base64,iVBORw0KGgo..." 格式,减少 HTTP 请求
  • API 传输:JSON 不支持二进制,Base64 是传输文件内容的标准方式
  • JWT(JSON Web Token):Header 和 Payload 部分使用 Base64Url 编码
  • 基本认证:HTTP Basic Auth 将 用户名:密码 Base64 编码后放在请求头中

如何在线进行 Base64 编码 / 解码

使用 tool.tl Base64 编码工具Base64 解码工具

  1. 打开 tool.tl/base64-encoder(编码)或 tool.tl/base64-decoder(解码)
  2. 在输入框中粘贴文本或上传文件
  3. 结果实时生成
  4. 点击「复制」即可使用

Base64 编码示例

原始文本Base64 编码结果
HelloSGVsbG8=
Hello, World!SGVsbG8sIFdvcmxkIQ==
tool.tldG9vbC50bA==
123456MTIzNDU2

注意结尾的 ===:这是填充符,用于保证编码结果长度是 4 的倍数。

Base64 vs URL 编码:有什么区别?

对比项Base64URL 编码
编码目标二进制数据 → 文本特殊字符 → %XX 格式
输出字符集A-Za-z0-9+/=原字符 + %XX
可读性完全不可读部分可读
大小变化增大约 33%视特殊字符数量而定
典型用途文件传输、图片嵌入URL 查询参数

Base64Url 编码(JWT 用的变体)

标准 Base64 中的 +/ 在 URL 中有特殊含义,因此 JWT 等场景使用 Base64Url:将 + 替换为 -,将 / 替换为 _,并去掉末尾的 = 填充符。使用 JWT 调试工具 可以解码和验证 JWT。

各语言中的 Base64 操作

# Python
import base64
encoded = base64.b64encode(b'Hello').decode()  # 'SGVsbG8='
decoded = base64.b64decode('SGVsbG8=').decode()  # 'Hello'

# JavaScript
const encoded = btoa('Hello');        // 'SGVsbG8='
const decoded = atob('SGVsbG8=');    // 'Hello'

# Shell
echo -n 'Hello' | base64            # SGVsbG8=
echo 'SGVsbG8=' | base64 --decode   # Hello

常见问题(FAQ)

Q:Base64 是加密吗?

A:不是。Base64 只是编码,不提供任何安全性。任何人都可以用解码工具还原原始内容。如果需要加密,应使用 AES、RSA 等真正的加密算法。

Q:Base64 编码后为什么变大了?

A:Base64 用 4 个字符表示 3 个字节,因此编码后内容体积增加约 33%。如果对大文件使用 Base64,需要考虑传输和存储成本。

Q:如何判断一段文字是否是 Base64 编码的?

A:Base64 字符串只包含 A-Z、a-z、0-9、+、/,长度通常是 4 的倍数,末尾可能有 ===。但这只是特征,最可靠的方式是直接解码后看结果是否有意义。