Base64编码器
将纯文本或二进制字符串转换为Base64编码输出。支持RFC 4648的标准和URL安全字母表,并处理完整的UTF-8,包括表情符号和非拉丁脚本。
Base64大约增加33%的数据大小。这个权衡是因为二进制数据需要在仅文本的通道中生存,如电子邮件头、JSON负载和HTTP授权头。根据RFC 4648,Base64使用一个64字符的字母表:A-Z、a-z、0-9,以及+和/(或在URL安全模式下的-和_)。这个基于浏览器的编码器完全在您的设备上处理输入,使用内置的btoa()和TextEncoder API。私密字符串、令牌和凭据从不发送到任何服务器。
如何编码为Base64
- 在输入框中输入或粘贴要编码的文本。
- 选择标准或URL安全编码模式。
- 编码后的Base64输出会立即显示在输出面板中。
- 点击复制将结果复制到剪贴板。
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更有效率。