Base64学习


二进制:0和1,计算机基本存储
4位二进制:常用的二进制表示,可以表示0-15
8位二进制:8位通常称为一个byte,也是计算机的基本存储单位

文本文件,二进制文件:
简单的来说,这两种文件都是二进制存储,只是解读的时候,文本文件可以直接以ASCII码,或者Unicode码方式解读;而其他的文件以文本解码的方式解读出来的是乱码

二进制文件一般指的是文本文件之外的类型文,比如,图片,音视频,执行文件等

Base64原理

Base64是基于可打印的64个字符的,以这些字符来表示二进制文件

  1. 把原来的二进制文件,每3个字节,3*8=24位作为一组,再分成4组,每组6bit
  2. 找对应的字符
    比如:

转换前 11111111, 11111111, 11111111 (二进制)
转换后 00111111, 00111111, 00111111, 00111111 (二进制)
上面的三个字节是原文,下面的四个字节是转换后的Base64编码,其前两位均为0。

把这4个转换为相应的索引去base64编码表找对应的字符,就是编码后的字符串
在这里插入图片描述

因为把24位变成了32位,长度增加了1/3。

那么如果原文件长度不是3的倍数,比如8个字节,以3个一组,最后剩余2个字节如何处理?Base64用\x00字节在末尾补足后,再在编码的末尾加上2个=号,表示补了多少字节,解码的时候,会自动去掉。

url Base64

由于标准的Base64编码后可能出现字符+和/,在URL中就不能直接作为参数,所以又有一种"url safe"的base64编码,其实就是把字符 ‘+’ 和 ‘/’ 分别变成 ‘-’ 和 ‘_’

Base64编码不用于加密

Base64是一种通过查表的编码方法,不能用于加密,即使使用自定义的编码表也不行。

Base64适用于小段内容的编码,比如数字证书签名、Cookie的内容等。

Base64中的等号’=’

由于=字符也可能出现在Base64编码中,但=用在URL、Cookie里面会造成歧义,所以,很多Base64编码后会把=去掉:

去掉=后怎么解码呢?因为Base64是把3个字节变为4个字节,所以,Base64编码的长度永远是4的倍数,因此,需要加上=把Base64字符串的长度变为4的倍数,就可以正常解码了。
学习参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值