Base64是什么?

Base64是一种基于64个可打印字符来表示二进制数据的编码方法。它将每3个字节(24位)的数据转换为4个Base64字符(每个字符6位),因此编码后的数据体积会增加约33%。Base64不是加密算法,它只是一种编码方式,任何人都可以解码。

Base64的编码原理

Base64使用A-Z、a-z、0-9、+和/这64个字符作为编码字母表,=作为填充字符。编码过程如下:将原始数据按3字节一组分割;将3字节(24位)分为4组,每组6位;将每组6位的值(0-63)映射为Base64字母表中的字符;不足3字节的组用=填充。

例如,字符串"Man"的ASCII码为77、97、110,二进制为01001101 01100001 01101110,分为4组6位:010011 010110 000101 101110,对应Base64字符:TWFu。

标准Base64 vs URL安全Base64

标准Base64中的+和/字符在URL中有特殊含义,可能导致问题。URL安全Base64(也叫Base64url)将+替换为-,/替换为_,去掉末尾的=填充。JWT就使用了Base64url编码。在处理URL或文件名中的Base64数据时,必须使用URL安全版本。

Base64的6个实际应用场景

  1. Data URL内联图片:将小图片编码为Base64直接嵌入HTML/CSS,减少HTTP请求。适合10KB以内的图标和装饰图。
  2. 邮件附件:MIME协议使用Base64编码二进制附件,确保通过纯文本SMTP协议传输。
  3. JWT Token:JWT的Header和Payload使用Base64url编码,方便在HTTP Header中传输。
  4. API数据传输:在JSON等文本格式中传输二进制数据(如图片、文件)。
  5. 配置文件中的密钥:将二进制密钥编码为Base64存储在YAML/JSON配置中。
  6. 源码映射:Source Map使用Base64 VLQ编码映射信息。

Base64的性能影响

Base64编码会增加33%的数据体积。对于大文件(如图片),内联Base64不仅增加HTML体积,还会阻塞页面渲染。一般来说,超过10KB的图片不建议使用Base64内联。在CSS中,Base64图片无法被浏览器缓存,每次页面加载都要重新解码。

工具推荐

使用我们的在线Base64编解码工具,支持标准Base64和URL安全Base64,完美支持中文UTF-8编码,所有数据本地处理不上传服务器。