美文网首页
Base64算法理解

Base64算法理解

作者: dawsonenjoy | 来源:发表于2020-03-11 23:10 被阅读0次

    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是/

    计算过程
    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=

    相关文章

      网友评论

          本文标题:Base64算法理解

          本文链接:https://www.haomeiwen.com/subject/watbactx.html