什么是 Base64 编码?完整说明
快速解答
Base64 编码使用 64 个可打印字符(A-Z、a-z、0-9、+、/)将二进制数据转换为文本。每 3 个字节的输入变成 4 个 Base64 字符。 Base64 是可逆的(不是加密),数据大小会增加约 33%。使用我们免费的 Base64 编码器和解码器在浏览器中进行转换。
介绍
Base64 是一种二进制到文本的编码方案,可将二进制数据转换为使用 64 个可打印字符的 ASCII 字符串表示形式。它由 RFC 4648 定义,通常用于对需要通过设计用于处理文本的媒体传输的数据进行编码 - 电子邮件附件 (MIME)、HTML/CSS 中的数据 URLs、JWT 令牌部分和包含二进制数据的 JSON 有效负载。 Base64 是编码,而不是加密——它是完全可逆的并且不需要密钥。任何人都可以解码 Base64,因此它不提供机密性。
步步
-
了解字符集
Base64 使用 64 个字符:A-Z (26)、a-z (26)、0-9 (10)、+ 和 / (2)。当输入长度不是 3 的倍数时,= 字符用于填充。URL 安全变体将 + 替换为 - 并将 / 替换为 _ 并省略填充。
-
了解编码的工作原理
Base64 处理 3 字节(24 位)块中的输入。每个 24 位块分为四个 6 位组。每个 6 位值 (0-63) 映射到 64 个字符之一。如果输入不是 3 的倍数,则添加填充 (=):1 个字节输入 → 2 个 Base64 字符 + ==,2 个字节 → 3 个字符 + =。
-
了解开销大小
Base64 将数据大小增加了大约 33% — 每 3 个字节变成 4 个字符。当 Base64 编码时,1 MB 文件变为约 1.33 MB。此开销是纯文本兼容性的权衡。
-
区分编码和加密
Base64 是编码,而不是加密。它是可逆的,无需钥匙——任何人都可以解码。 Base64 不提供保密性;它仅将二进制转换为文本以进行传输。切勿使用 Base64 来存储密码或机密。
示例
对文本进行编码
输入: Hello, World!
输出: SGVsbG8sIFdvcmxkIQ==
编码二进制数据(显示为十六进制)
输入: 字节:0x00 0x01 0x02
输出: AAEC
URL-安全 Base64 (JWT 风格)
输入: Standard: SGVsbG8= → URL-safe: SGVsbG8 (no padding, - and _ for + and /)
输出: 用于 JWT 令牌和 URL 参数
常见问题
- 将 Base64 视为加密 —Base64 是可逆的,无需密钥。任何人都可以解码它。切勿使用它来保护敏感数据。
- 非 ASCII 字符 — 天真的 btoa() 在 Unicode 上抛出异常。使用 TextEncoder + btoa(unescape(encodeURIComponent(text))) 或支持 UTF-8 的工具。
- 删除填充 — = 填充是编码的一部分。删除它会破坏解码(尽管某些解码器可以重建它)。
- 大小开销 —Base64 使数据大小增加约 33%。对于大文件来说,这一点很重要;考虑是否需要编码。
提示
- 对数据 URLs 使用 Base64 将小图像嵌入到 HTML/CSS 中,无需单独的 HTTP 请求。
- 对 URLs 和 JWT 标记使用 URL 安全 Base64 (将 + 替换为 -,将 / 替换为 _,剥离填充)。
- Base64 不是加密——使用它是为了传输兼容性,而不是为了保密。
- 使用我们的 Base64 编码器和解码器在您的浏览器中进行即时、私密的转换。