Base62 和 Base64 有什么区别?

20 阅读4分钟

Base62 和 Base64 都是将数据转换为可见字符的编码方式,但它们使用的字符集、编码规则和适用场景并不相同。简单来说,Base64 常用于表示二进制数据,Base62 常用于生成较短、便于放进 URL 或文本中的标识符。

一、什么是 Base64?

Base64 使用 64 个字符表示数据,常见字符集为:

        
A-Z  a-z  0-9  +  /
        
      

标准 Base64 还可能使用 = 作为填充字符。因此,编码后的内容中可能出现 +、/ 和 =。

Base64 通常用于把二进制数据转换成文本,例如:

  • 在 JSON 或 XML 中传输图片、文件等二进制内容
  • 在邮件中传输附件
  • 在数据 URI 中嵌入图片或字体
  • 在某些文本协议中传递二进制内容

需要注意,Base64 是一种编码方式,不是加密方式。任何人都可以将 Base64 内容解码还原。

二、什么是 Base62?

Base62 使用 62 个字符,常见字符集为:

        
0-9  A-Z  a-z
        
      

它不包含 +、/ 和 =,因此生成的字符串通常更适合放在 URL、文件名或其他对特殊字符较敏感的场景中。

Base62 常见用途包括:

  • 短链接中的短码
  • 数据库记录的短 ID
  • 邀请码、兑换码等
  • 将数字或整数转换成更短的字符串表示

不过,Base62 并没有一个适用于所有场景的统一标准。不同库可能采用不同的字符顺序、数字转换方法和补零规则。使用时,编码和解码必须采用同一套规则。

三、主要区别

对比项Base62Base64
字符数量62 个64 个
常见字符数字、大写字母、小写字母数字、大小写字母,以及 +、/
填充字符通常没有,但取决于具体实现标准实现通常使用 = 填充
常见用途短码、短 ID、数字表示二进制数据的文本传输
是否适合直接放入 URL通常较方便标准形式可能需要 URL 安全处理
是否是加密不是不是

四、编码结果长度有什么不同?

Base64 将数据按 3 个字节一组处理,每组通常编码成 4 个字符。因此,编码后的长度大约是原始数据长度的 4/3,也就是增加约三分之一。

例如,3 个字节的数据通常会变成 4 个 Base64 字符;如果数据长度不足 3 个字节,标准 Base64 会通过 = 补齐。

Base62 的长度则取决于具体的实现方式和输入数据。若把整数转换成 Base62,字符越多可以表示的数值范围越大;如果直接编码任意二进制数据,不同算法的结果和长度也可能不同。因此,不能简单地认为 Base62 一定比 Base64 短。

五、Base64 和 URL 安全 Base64

标准 Base64 中的 + 和 / 在某些 URL 场景下需要额外处理。为此,常见做法是使用 Base64URL:

        
+ 替换为 -
/ 替换为 _
        
      

此外,Base64URL 通常会省略末尾的 = 填充。它仍然属于 Base64 的变体,并不等同于 Base62。

如果只是因为 Base64 中有特殊字符而考虑 Base62,可以先看看 Base64URL 是否满足需求。

六、应该选哪一种?

选择 Base64 的情况

  • 需要把图片、文件或其他二进制数据编码成文本
  • 需要与常见网络协议或数据格式兼容
  • 希望使用成熟、通用的标准方案

选择 Base62 的情况

  • 需要将数字或 ID 表示成较短的字符串
  • 希望生成的字符只包含数字和英文字母
  • 需要减少 URL、文件名或邀请码中的特殊字符

需要特别注意:Base62 字符集本身不包含特殊符号,并不代表它具有安全性。**Base62 和 Base64 都只是编码,不具备加密或防伪能力。**如果数据需要保密,应使用加密算法;如果需要验证来源,应使用签名或消息认证码。

总结

Base64 更适合将二进制数据转换为文本进行传输;Base62 更常用于把数字或标识符转换成由字母和数字组成的短字符串。二者解决的问题不同,不能只根据字符数量来判断谁更好。

选择时可以记住:传输二进制数据,优先考虑 Base64;生成短 ID 或短码,可以考虑 Base62;需要 URL 友好的 Base64,则考虑 Base64URL。