Base64 编码 / 解码器
这个 Base64 工具可将文本编码为 Base64 格式,并将 Base64 字符串解码回可读文本。Base64 是一种二进制到文本的编码方案,使用 64 个 ASCII 字符表示二进制数据,常用于电子邮件、数据 URL 和 API 身份验证。
Base64 编码 / 解码器
将文本编码为 Base64,或将 Base64 解码回文本
常见问题
什么是Base64编码?
Base64编码是一种将二进制数据转换为64个ASCII字符(A-Z、a-z、0-9、+和/)字符串的二进制到文本编码方案。它允许二进制数据通过基于文本的协议安全传输,例如嵌入HTML/CSS中作为data URI,或包含在JSON和XML文档中,而不会损坏数据。
Base64编码是如何工作的?
Base64的工作原理是将每3个字节(24位)分成4组,每组6位。每个6位组映射到Base64字母表中的64个字符之一。如果输入长度不能被3整除,则添加填充字符(=)。例如,文本"Hi"(2字节)产生"SGk=",其中包含一个填充字符。
为什么使用Base64?
当二进制数据需要以文本形式表示时就会使用Base64。常见用途包括:在HTML/CSS data URL中嵌入图像、对邮件附件(MIME)进行编码、在JSON或XML中存储二进制数据、HTTP基本身份验证头,以及以PEM格式对加密密钥和证书进行编码。
Base64和加密有什么区别?
Base64是一种编码方案,不是加密。它将数据转换为不同的表示形式,但不提供任何安全性。任何人都可以在没有密钥的情况下解码Base64。相比之下,加密使用算法和密钥使数据在没有正确密钥的情况下无法读取。Base64用于数据传输兼容性,而不是保密性。
Base64比原始数据大多少?
Base64编码使数据大小增加约33%。每3字节输入产生4字节Base64输出。例如,3KB的文件经Base64编码后约为4KB。这种开销是以文本格式安全表示二进制数据所需的代价。
什么是URL安全Base64?
URL安全Base64将标准的+和/字符分别替换为-和_,通常省略=填充。此变体用于URL、文件名和其他标准Base64字符会造成问题的场景。它通常用于JWT令牌、URL参数和文件系统安全标识符。
Base64可以编码二进制文件吗?
是的,Base64可以编码任何二进制文件,包括图像、PDF、音频、视频和可执行文件。文件以原始字节方式读取,然后编码为Base64文本。这通常用于将小图像直接嵌入HTML或CSS、将文件附加到邮件,以及通过纯文本API传输二进制数据。
如何在JavaScript、Python或命令行中进行Base64编码?
在JavaScript中,使用btoa()编码,atob()解码:btoa("Hello")返回"SGVsbG8="。在Python中,使用base64模块:base64.b64encode(b"Hello").decode()返回"SGVsbG8="。在命令行中,使用:echo -n "Hello" | base64(macOS/Linux)。解码分别使用atob()、base64.b64decode()或echo "SGVsbG8=" | base64 --decode。
什么是Base64 data URI?
data URI使用Base64编码将文件内容直接嵌入HTML或CSS中。格式为data:[mediatype][;base64],<数据>。例如,小PNG图像可以嵌入为<img src="data:image/png;base64,iVBOR..."/>。Data URI消除了额外的HTTP请求,但会增加约33%的HTML大小,因此最适合5-10KB以下的小文件。
Base64和Base32有什么区别?
Base64使用64个字符(A-Z、a-z、0-9、+、/),输出紧凑,大小增加约33%。Base32只使用32个字符(A-Z、2-7),大小增加约60%,但输出不区分大小写,避免了像0/O和1/l这样容易混淆的字符。Base32用于TOTP/2FA验证码,而Base64是一般数据编码的首选。
关于 Base64 编码 / 解码器
Base64 编码 / 解码器是一款多功能在线工具,可将文本编码为 Base64 格式,或将 Base64 字符串解码还原为可读文本。Base64 编码广泛应用于 Web 开发、电子邮件系统和数据传输场景,用于以 ASCII 文本的形式安全表示二进制数据。本工具无缝支持 Unicode 字符,适用于多语言内容处理。
什么是 Base64 编码?
Base64 是一种二进制到文本的编码方案,使用 64 个 ASCII 字符(A-Z、a-z、0-9、+、/)来表示二进制数据。它将每 3 个字节的输入转换为 4 个 Base64 字符,当输入长度不是 3 的倍数时,会添加填充字符(=)。本工具遵循 RFC 4648 定义的标准 Base64 字母表。
如何使用 Base64 编码 / 解码器
- 选择"编码"选项卡将纯文本转换为 Base64,或选择"解码"选项卡将 Base64 转回文本
- 在输入区域输入或粘贴文本
- Base64 编码 / 解码器会实时即时转换您的输入
- 点击复制按钮将结果复制到剪贴板
- 查看大小对比,了解编码带来的数据量增加
Base64 编码的常见应用场景
- 使用 data URI 将图片直接嵌入 HTML 或 CSS
- 以 MIME 格式对电子邮件附件进行编码
- 通过 JSON 或 XML 等纯文本协议传输二进制数据
- 在仅支持文本的数据库中存储二进制数据
- 在 HTTP Basic Auth 请求头中对身份验证凭据进行编码
- 在 URL 查询参数中传递二进制数据
Base64 编码的工作原理
Base64 编码过程通过以下步骤转换输入数据:
- 输入文本被转换为对应的二进制字节表示(UTF-8)
- 二进制数据被分割为每组 6 位的片段
- 每个 6 位组映射到 64 个 Base64 字符之一
- 如有需要,添加填充字符(=)使输出长度为 4 的倍数
Base64 编码会将数据大小增加约 33%,因为 3 字节的输入会产生 4 字节的输出。本工具会为每次转换显示大小对比信息。
Base64 字符集
标准 Base64 字母表(RFC 4648)将每个 6 位值(0–63)映射到特定字符。64 个字符包括:A–Z(索引 0–25)、a–z(索引 26–51)、0–9(索引 52–61)、+(索引 62)和 /(索引 63)。URL 安全 Base64 将 +(索引 62)替换为 -,将 /(索引 63)替换为 _。
Base64 在各编程语言中的使用
各主流编程语言中 Base64 编码与解码的常用方式:
| 语言 | 编码 | 解码 |
|---|---|---|
| JavaScript | btoa(str) | atob(str) |
| Python | base64.b64encode(b) | base64.b64decode(s) |
| Java | Base64.getEncoder().encode(b) | Base64.getDecoder().decode(s) |
| C# | Convert.ToBase64String(b) | Convert.FromBase64String(s) |
| PHP | base64_encode($s) | base64_decode($s) |
| Go | base64.StdEncoding.EncodeToString(b) | base64.StdEncoding.DecodeString(s) |
| CLI(macOS/Linux) | echo -n str | base64 | echo str | base64 --decode |
Unicode 与 UTF-8 支持
本 Base64 编码 / 解码器通过在进行 Base64 转换前先将文本编码为 UTF-8 字节,从而完整支持 Unicode 字符。这意味着您可以安全地编码和解码包含特殊字符、表情符号以及任意语言字符的文本。本工具使用 TextEncoder 和 TextDecoder API,确保正确处理多字节字符。
Base64 使用技巧
- Base64 是编码方案,而非加密——不提供任何安全保护
- Base64 编码后的字符串始终比原始数据长(增加约 33%)
- 在 URL 中使用 Base64 时,建议使用 URL 安全 Base64,将 + 替换为 -,将 / 替换为 _
- 解码前请移除 Base64 字符串中的任何空格或换行符
- 有效的 Base64 字符串长度必须是 4 的倍数(含填充字符)