Base64加密解密工具可在线解码base64字符串,或者普通字符串在线加密成base64字符串。
编码 解码
{{errorMsg}}

1. base64编码简介

毫无疑问,base64是一种数据的编解码方法(算法)。更具体地描述,它是一种从二进制(blob)到字符的编解码。base64将3个字节,共24bits的数据,编码为6个bits为一个单元的4个数据单元。

如何解释呢?

通俗的讲,就是对原始的binary数据,按照每3个字节的序列进行分组。如果binary数据不是3个字节的整数倍,需要进行补全。因此,base64编码后的字符长度,必定是3字节(24比特)的整数倍。具体规范,见下文。

2. base64编解码规范

由定义可知,base64编码的每个字符是6个bits表示,因此总共是2^6 = 64个有效数据字符。实际上,还额外需要一个做padding的字符,base64规范中使用’=‘字符来对3字节对齐的尾部做padding补足。

目前,base64的编解码规范,主要使用RFC4648标准,其编码使用的可打印字符如下图。

需要注意的是:

  • 按照二进制计算出的十进制索引的字符进行填充,例如:十进制的1就对应了字符'A'
  • 编码后,数据长度增加。因为编码后用ASCII字符(8bits)来表示一个6bits的二进制数据,因此数据长度至少为原来的4/3倍。
  • 二进制数据不足3字节的整数倍时,需要进行尾部填充(padding)。
  • 为什么是3字节的整数倍?因为二进制数据都是以字节(8bits)为单位的,而6和8的最小公倍数是24(bits),也即3字节。
  • 关于补全,有两种情况
    • 单字节尾部,剩余不足6bits时,需要先填0补全跨字节边界的6个bits
    • 完整字节的尾部直接按照每6bits补一个'='字符
  • 等号仅会在尾部出现,且最多两个等号。