utilduck
Home · 开发者 · Base64 编码 / 解码

Base64 编码 / 解码

输入或粘贴文本,选择编码或解码,即时查看结果。

结果
-

什么是 Base64?

Base64 是一种将二进制或文本数据转换为 64 个可打印 ASCII 字符字符串的编码方案。它广泛用于电子邮件附件、在 HTML/CSS 中嵌入图片以及通过纯文本渠道传输二进制数据。解码将过程反转,还原为原始文本。

怎么把文字编码成 Base64?

把文字编码成 Base64 时,取文字的原始字节,每 3 个字节一组,把每组 24 位映射成 Base64 64 字符表中的 4 个字符;末尾不足的分组用 = 补齐。例:"hello" 编码后是 "aGVsbG8=",解码 "aGVsbG8=" 会还原成 "hello"。

Base64 编码与解码步骤

  1. 用 UTF-8 编码把输入文字转换成原始字节。
  2. 从左到右,把字节每 3 个(共 24 位)分为一组。
  3. 把每个 24 位分组拆分成四个 6 位的小块(取值范围 0-63)。
  4. 把每个 6 位小块映射成 Base64 字符表 A-Z、a-z、0-9、+、/ 中的一个字符。
  5. 如果最后一组不足 3 个字节,用 = 字符补齐输出,使总长度是 4 的倍数;解码时按相反顺序还原出原始字节。

Base64 编码规则

3 字节(24 位) -> 4 个 Base64 字符(每个 6 位),不足时用 = 补齐到 4 的倍数
  • Base64 字符表 = A-Z、a-z、0-9、+、/,共 64 个可打印字符,分别代表 0 到 63 的值
  • = 填充字符用于补全不完整的最后一组,使编码后的输出长度始终是 4 的倍数

文字转 Base64 示例

文字Base64
aYQ==
abYWI=
abcYWJj
helloaGVsbG8=
Hello, World!SGVsbG8sIFdvcmxkIQ==

常见问题

Base64 编码等同于加密吗?

不是。Base64 没有密钥——任何人都可以用同一套公开、标准化的字符表把它解码还原成原文。它只是改变数据在纯文本系统中的传输表示方式,不提供任何机密性,绝不应该用来保护敏感数据。

为什么编码结果有时以 = 或 == 结尾?

= 字符是填充符。Base64 总是把每 3 个输入字节转换成 4 个输出字符;如果输入长度不是 3 的倍数,最后一组会用一个或两个 = 补齐,让输出总长度始终是 4 的倍数。

为什么 Base64 输出比原文更长?

每 3 个字节的输入会变成 4 个字符的输出,所以编码后的文本大约比原文大 33%。这个额外开销是用安全、可打印的 ASCII 字符表示任意二进制数据所要付出的代价。

Base64 能编码文字以外的数据吗?

可以。Base64 处理的是原始字节,因此可以编码图片、音频或任何二进制文件,不局限于文字。本工具接受文字输入,编码其 UTF-8 字节表示;若要编码任意二进制文件,需要能直接读取文件字节的工具。

本工具在浏览器内完成 UTF-8 文本的编码和解码,不直接接受二进制文件上传;解码非法的 Base64 文本时会提示错误,而不是输出部分或损坏的结果。

Sources: RFC 4648 - The Base16, Base32, and Base64 Data Encodings

隐私与安全

  • 在浏览器中计算 — 您输入的内容仅在本机设备上计算,不会发送到 utilduck 服务器。
  • 加密连接 — 所有页面均通过 HTTPS 提供,传输过程中无法被读取。
  • 不提供给第三方 — 您输入的内容不会传递给分析或广告服务。
  • 不保存 — 计算结果不会保存到任何服务器,也无需注册账号。

最后更新: 2026-08-17

Base64编码不提供保密性

Base64只是把二进制内容表示成可传输的文本,任何人都能用同样方法解码。它适合在JSON、邮件或数据URL中搬运内容,却不能代替加密、签名或密码散列。不要因为字符串看起来杂乱就把密钥、令牌或个人资料直接公开。

编码与解码时要确认文本字符集和换行是否被改变。复制结果若缺少末尾填充符或混入空格,某些系统会拒绝解析。重要数据应在目标系统中做一次往返测试,确认解码后与原文完全一致。

在系统之间传递Base64文本时,最容易出错的往往不是编码按钮,而是双方对原始字符的解释不同。带重音的字母、中文、表情和换行都要先按同一字符编码变成字节,接收端再以同样方式还原;若一端把换行改写、删除末尾填充或把复制内容自动折行,解码虽可能成功,得到的文本却未必与原文逐字一致。还要区分标准Base64与面向网址或文件名的变体,它们使用的字符表和填充习惯可能不同。接口文档若指定了某一变体,应按文档处理,不能只因为字符串“看起来像Base64”就直接互换。

排查问题时可选一段包含空格、换行和非ASCII字符的已知文本,依次记录原文、字符编码、Base64结果与解码后的文本,再做往返比较。若字符串嵌入JSON、URL查询或数据URL,还要让外层格式完成自己的转义,避免把外层百分号编码或引号问题误诊为Base64错误。编码只改变表示方式,长度增加和可读性下降都不会提供机密性、完整性或发送者身份保证;敏感资料仍需采用经过批准的加密和访问控制,校验篡改则使用适当的摘要、认证码或签名机制。不要把真实令牌放入公开示例、错误日志或工单。若接口仍拒绝结果,应逐项核对媒体类型、外层引号、是否要求换行以及前缀是否属于数据本身,并用接收端官方示例作最小测试。不要通过反复删除末尾字符来碰运气,因为那会掩盖真正的格式约定。