严格来说,我们今天文章的主角Base64并不是加密算法,而是一种将二进制数据转换为可打印字符的编码方式。但在实际网络应用领域,不少人还是会将BASE64编码误称为“加密”。下面,我们就一起来了解一下Base64算法。

Base64算法简介

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,可用于在HTTP环境下传递较长的标识信息。由于采用Base64编码具有不可读性,需要解码后才能阅读。所以,不少人也将其视为加密算法。但Base64并不安全,经过简单的解码(逆运算)就可以看到原文。

Base64算法的原理

Base64 算法的原理,是将输入流中的字节按每 3 个分为一组,然后每次取 6 个比特,将其转换成表格中对应的数据,一直重复到没有剩余的字符为止。以UTF-8 编码为例,转换表格如下:

Base64

Base64算法的编码过程

假设我们要对字符串 S.H 进行编码:

  1. 将其转换成十六进制为 53、2e、48
  2. 再将十六进制转换成二进制,分别为 01010011、00101110、01001000。这里不足 8 个比特的高位补 0 即可。
  3. 将其每6个比特分为一组,分别为 010100、110010、111001、001000
  4. 将其转换成十进制得到,20、50、57、8
  5. 再根据表格中的转换关系转换可得,U、y、5、I

换句话说,字符串 S.H 通过 Base64 算法编码之后的结果为 Uy5I 。

Base64

Base64算法的解码原理

因为最终的编码产物中,如果 6 个比特的分组不满 4 组,会有 = 作为填充物,所以一个 base64 完后的产物总是能够被 4 整除。

所以,在解密中,我们每次需要处理 4 个字符,将这 4 个字符编码之后转换成十进制,再转换成二进制,不足 6 位的高位补0,然后将 6 个比特一组的二进制数按原顺序重新分成每 8 个比特一组,也就是一个字节一组。然后将其转换成十六进制,再转换成对应的字符。

Base64算法的解码过程

  1. 假设我们需要解密的字符为 Uy5I,解密过程就为:
  2. 按照每次处理4个字符的原理,根据表格将其分别转换成十进制20、50、57、8
  3. 再将其转换成二进制,不足六位的高位补0,再将其分成每 8 个比特一组
  4. 将分组好的比特转换成十六进制,得到53、2e、48
  5. 最后将十六进制转换成字母得到S、.、H,也就是 S.H

Base64


最后,小编提醒大家,Base64编码不是用来加密的,也不是加密算法。它只是用来编码的,切记不可用于加密重要数据。

免责声明:素材源于网络,如有侵权,请联系删稿。