Base64是加密算法吗?
因为Base64算法是可逆的,所以不能算是加密算法,而算是一种编码方式。是一种使用64个可打印字符来表示二进制数据的编码方式
作用
- 转码
- 向浏览器以字符串输出
- 当url中有特殊字符时,可以利用Base64编码来进行转义
- 对于图片,本身是二进制,而Base64可以表示任何的二进制数据,因此可以直接在图片的src下存放Base64编码后的图片内容,这样就可以直接展示图片,而无需去请求对应url路径的图片,减少网络开销
- 语言文字底层通过二进制传输,此时也可以通过Base64编码来展示
算法原理
官方
把每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是/
计算过程
- 找到指定编码字符的字符编码表
- 找到编码表中对应字符的值,并将值转为二进制
- 对二进制数进行分组,每6位一组(不足6位的后面补0)
- 去Base64表中查找其对应的编码字符
- 编码表参照完成后,最后不足4字节的后面补
=
,编码结束
例如将GB2312编码中的你
字进行base64编码:
网友评论