Base64編碼算法

Base64在日常开发中的出镜率还是比较高的,那你真的了解它吗?它是加密算法吗?它有什么作用?具体算法是怎么样的?为什么叫Base64?

Base64是什么

Base64是一种二进制到文本的编码方式。如果要更具体一点的话,可以认为它是一种将 byte数组编码为字符串的方法,而且编码出的字符串只包含ASCII基础字符。

例如字符串ShuSheng007对应的Base64为U2h1U2hlbmcwMDc=。其中那个=比较特殊,是填充符,一会再说。

值得注意的是Base64不是加密算法,其仅仅是一种编码方式,算法也是公开的,所以不能依赖它进行加密。

为什么叫Base64

因为它是基于(Base)64个字符的一种编码方式。使用其编码后的文本只包含64个ASCII码字符(偶尔加一个填充字符=

Base64使用到的64个字符:A-Z 26个,a-z 26个,0-9 10个,+ 1个,/ 1个

20221017145703

Base64算法

  • 将原始数据每三个字节作为一组,每个字节是8个bit,所以一共是 24 个 bit
  • 将 24 个 bit 分为四组,每组 6 个 bit
  • 在每组前面加补 00,将其补全成四组8个bit
  • 到此步,原生数据的3个字节已经变成4个字节了,增大了将近30%
  • 根据Base64码表得到扩展后每个字节的对应符号

末尾的等号

有时我们会在Base64字符末尾会看到=,有时1个,有时2个,这是为啥?

通过上面的我们知道了Base64编码过程是3个字符一组的进行,如果原文长度不是3的倍数怎么办呢? 例如我们的原文为Ma,它不够3个,那么只能在编码后的字符串中补=了。缺一个字符补一个,缺两个补两个即可,所以有时候你会看见base64字符串结尾有1个或者2个=