Base64 编码学习

base64编码

在参数传输的过程中使用全英文的没问题,但一旦涉及到中文就可能会出现乱码情况。
与此类似,网络上传输的字符并不全是可打印的字符,比如二进制文件、图片,Base64的出现就是为了解决此问题。

Base64可以成为密码学的基石。
Base64编码具有不可读性,需要解码后才能阅读。
比如平时下载东西时有一个下载链接,在浏览器上是打不开的,但是在迅雷一类的下载软件上可以打开,这个链接就进行了 Base64编码,可能还加入了一些其他的加密方式。

base64编码是把 64个基本的ASCII码字符对数据进行重新编码,用这些可打印字符 来表示二进制数据的编码方式。

Base64字符表:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

在这里插入图片描述

base64编码转换原理
1、将要转换的字符串每三个字节分为一组,每个字节的ASCII码值的二进制占8个bit位,那三个字节就是24个bit位,即有24个二进制位。
2、再把这24个二进制位每6个分为一组,就共分有4组。
(注:这里虽然每组为6个二进制位,但是还是会按照8个bite存储,所以会造成一定的浪费,base64编码之后文本会变大)
3、最后把每组的二进制转换为十进制就是base64码的数值(索引),把这个十进制数值 再base64编码表里一个个找到对应的字符,就完成了base64编码。

例如:
对字符串‘ Mani1sah4nc ’进行base64编码,每三个一组,那就先把前三个字符‘ Man ’分为一组, 对应的ASCII码值分别为77,97,110,对应的二进制值是01001101、01100001、01101110。
把这24个二进制位分为四组,每组再转化为十进制,在base64编码表里找到对应的字符。

在这里插入图片描述

接下来以此类推,每三个字节分为一组,但是当分到最后时,发现只剩‘ nc ’两个字节,不满三个,那就需要用‘ = ’补齐空位。

位数不足编码原理
同样按三个来处理。同样给出24个二进制位,分成四组,如下的‘ nc ’的例子,第三组缺少二进制位的用0补齐,第四组没有对应的数据为空,则base编码位‘ = ’。
得到例子‘ nc ’base64编码后为‘ blM= ’

在这里插入图片描述

同样,如果字符串最后只有一个字节,无法有三个组成一组,也是这样按三个来处理,缺少的用0补齐,空的编码为‘ = ’。

拓展

Base16编码

Base16字符表:0123456789ABCDEF

在这里插入图片描述

base16编码原理
将要编字符的ASCII码值转化为二进制,每个码值的二进制为八个二进制位。
相比 base64 要求转换的字符每三个分为一组,而base16 编码不需要分组。因为刚好是4的倍数 ,base16 将这些二进制位每四个分为一组,每个转换的字符有8个二进制位,不会有二进制位剩余的情况。
再把四位的二进制数转换成十进制数,在base16编码表中找到对应字符即可。

在这里插入图片描述

Base32编码

Base32字符表:ABCDEFGHIJKLMNOPQRSTUVWXYZ234567

在这里插入图片描述

base32编码原理
将要编字符的ASCII码值转化为二进制,每个码值的二进制为8个二进制位,即8个bite。
相比 base64 要求原码每三个分为一组,base32 编码将每五个原码分为一组。
每五个原码的ASCII值转换成的二进制位共有40个bite,把40个二进制位每5个分为一组,共8组。
再把每五个二进制数转换成十进制数,在base16编码表中找到对应字符即可。

base32也存在位数不足的情况,和base64补齐规则相同,缺少二进制位的用0补齐,每组五个二进制位为空的用‘ = ’编码。

在base16、base32、base64中只有base16不会有位数不足的情况,也就不会存在使用 ‘ = ’ 编码的情况。但是这三种编码都会使文本的数据量变大。

附上base64编码在线转换地址:https://c.runoob.com/front-end/693 (菜鸟工具)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Goodric

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值