ByteCompress

Base64编码器

将纯文本或二进制字符串转换为Base64编码输出。支持RFC 4648的标准和URL安全字母表,并处理完整的UTF-8,包括表情符号和非拉丁脚本。

0 chars
FreeClient-sideNo signup

Base64大约增加33%的数据大小。这个权衡是因为二进制数据需要在仅文本的通道中生存,如电子邮件头、JSON负载和HTTP授权头。根据RFC 4648,Base64使用一个64字符的字母表:A-Z、a-z、0-9,以及+/(或在URL安全模式下的-_)。这个基于浏览器的编码器完全在您的设备上处理输入,使用内置的btoa()TextEncoder API。私密字符串、令牌和凭据从不发送到任何服务器。

如何编码为Base64

  1. 在输入框中输入或粘贴要编码的文本。
  2. 选择标准URL安全编码模式。
  3. 编码后的Base64输出会立即显示在输出面板中。
  4. 点击复制将结果复制到剪贴板。

Base64编码的工作原理

64字符字母表

Base64使用一个64字符的字母表:A-Z(26)、a-z(26)、0-9(10)和两个额外字符。标准Base64(RFC 4648 §4)使用+/。URL安全Base64(RFC 4648 §5)将其替换为-_。编码将三个输入字节(24位)分成四个6位组,并将每个6位值映射到相应的字母表字符。这就是为什么Base64输出长度始终是4的倍数。

填充

由于Base64以3字节为组处理数据,因此输入长度不是3的倍数时需要填充。一个剩余字节会在末尾产生==。两个剩余字节会产生=。标准Base64中需要填充,但在URL安全实现中通常会被去掉,特别是JWT。

示例

输入

你好,世界!

输出(标准Base64)

5L2g5a6a5LiW55WMIQ==

两个=填充字符出现是因为"你好,世界!"是13个字节 - 13 mod 3 = 1,因此最后一组剩下一个字节。

常见用例

  • HTTP基本认证 - Authorization: Basic头需要用户名:密码以Base64编码
  • HTML/CSS中的内联图像 - 数据URI:data:image/png;base64,iVBORw0KGgo...
  • JWT令牌 - 头部和有效载荷部分使用URL安全Base64
  • 电子邮件附件 - MIME(RFC 2045)使用Base64在基于文本的电子邮件协议中编码二进制附件

标准与URL安全Base64

标准Base64使用+/,这些在URL中具有特殊含义。URL安全Base64将其替换为-_,使输出在URL、文件名和查询参数中安全,无需百分号编码。对于JWT、OAuth令牌以及任何出现在URL中的Base64数据,请使用URL安全模式。要解码输出,请使用Base64解码器。要将编码数据嵌入URL查询参数,请将此工具与URL编码器结合使用。

常见问题

Base64是一种加密形式吗?

不。Base64是一种编码方案,而不是加密或任何形式的安全性。任何拥有Base64字符串的人都可以立即解码,无需密钥。它不提供任何保密性。如果需要保护数据,请使用AES-256或RSA - Base64用于在文本通道中安全传输二进制数据,而不是隐藏信息。

为什么Base64输出总是以==或=结尾?

Base64将数据以3字节为一组编码为4个字符。当输入长度不能被3整除时,最后一组包含1或2个字节而不是3个字节。一个剩余字节会产生==填充;两个剩余字节会产生=。填充确保输出长度始终是4的倍数,符合RFC 4648的要求。

这个编码器能正确处理Unicode和表情符号吗?

是的。编码器首先使用浏览器的TextEncoder API将文本转换为UTF-8字节,然后再应用Base64。包括表情符号(在UTF-8中为4字节)、汉字、阿拉伯字母和带重音的拉丁字符在内的Unicode字符都能正确编码,并解码回原始文本。

什么是URL安全Base64,我何时应该使用它?

URL安全Base64(RFC 4648 §5)将+替换为-,将/替换为_。每当Base64数据出现在URL、文件名、cookie或HTTP头中时,请使用它,因为标准字符可能会被误解。JWT令牌、OAuth访问令牌和PKCE代码验证器都使用URL安全Base64。

Base64使数据大小增加了多少?

Base64编码使数据大小增加33.33% - 3个输入字节变为4个输出字符(4/3 = 1.333...)。此外,输出可能包含最多2个填充字符。对于大型二进制负载,多部分或二进制协议比Base64更有效率。