Base64算法理解

2020-03-11  本文已影响0人  dawsonenjoy

Base64是加密算法吗?

因为Base64算法是可逆的,所以不能算是加密算法,而算是一种编码方式。是一种使用64个可打印字符来表示二进制数据的编码方式

作用

算法原理

官方

把每3个8位字节转换为四个6位的字节(3*8 = 4*6 = 24),然后在每个6位的前面补两个0(不足6位的后面补0),组成四个8位的字节,再将每个字节的值和64位字符编码表的值进行替换,不足4个字节的,后面补=

64的由来

一般中文占两个字节,而最大的字符是3个字节,也就是24位(一个字节8位),而24=3*8=4*6,所以我们可以用4个6位来表示一个字符(为了兼容最大的字符,所以用3个字节来表示一个),而二进制6位数的最大值是111111=63,也就是64个字符,这就是Base64当中64的由来。

64个字符编码表

0-25是大写字母,26-51是小写字母,52到61是数字,62是+,63是/

计算过程
  1. 找到指定编码字符的字符编码表
  2. 找到编码表中对应字符的值,并将值转为二进制
  3. 对二进制数进行分组,每6位一组(不足6位的后面补0)
  4. 去Base64表中查找其对应的编码字符
  5. 编码表参照完成后,最后不足4字节的后面补=,编码结束

例如将GB2312编码中的字进行base64编码:

  1. 在gb2312编码表里(链接)寻找字,发现字的十六进制编码为C4E3,二进制为:1100010011100011
  2. 将数字每6个一组:110001 001110 001100,对应的十进制值就是49 14 12,参照base64编码表(链接),可知对应编码为:x O M
  3. 因为不足4字节(3字节),所以最后补一个=,所以最终结果为:xOM=
上一篇 下一篇

猜你喜欢

热点阅读