Base64编码

一、Base64编码的由来

在参数传输的过程中经常遇到的一种情况:使用全英文的没问题,但一旦涉及到中文就会出现乱码情况。与此类似,网络上传输的字符并不全是可打印的字符,比如二进制文件、图片等。Base64的出现就是为了解决此问题,它是基于64个可打印的字符来表示二进制的数据的一种方法。

目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行(或再次Base64)传输。随之,Base64在URL、Cookie、网页传输少量二进制文件中也有相应的使用。

二、Base64编码原理

1.Base64编码表

在这里插入图片描述
上图就是base64编码依赖的表,是由A-Z,a-z,0-9以及+ / 这64个字符组成的,这样大家也就可以理解为什么叫Base63编码了。
这64个字符还有一个很重要的规律,就是全部都是可打印字符。我们知道ASCII码表中有128个字符,范围是0-127,其中0-31和127这33个字符属于控制字符;剩下的32-126这95个字符属于可打印字符,包括数字、大小写字母、常用符号。在这里我列举其中的一部分:
控制字符
在这里插入图片描述
可打印字符
在这里插入图片描述

2.Base64编码转换步骤

在这里插入图片描述
第一步,将待转换的字符串每三个字节分为一组,每个字节占8bit,那么共有24个二进制位。
第二步,将上面的24个二进制位每6个一组,共分为4组。
第三步,在每组前面添加两个0,每组由6个变为8个二进制位,总共32个二进制位,即四个字节。
第四步,根据Base64编码对照表(见上页图)获得对应的值。

总结

为什么会出现乱码呢?
传输字符属于ASCII码表中的控制字符,也就是说不可打印字符。
8bit编码(0-255)的方式超过了ASCII码表(0-127)的范围,比如早期的传输邮件的SMTP协议,传输图片资源的时候,某一个Byte值是10111011B,对应十进制187不属于ASCII码范围

Base64编码为什么可以解决乱码?
Base64编码表只有64个字符,而且全部都是可打印字符;采用6bit字符表示8bit字符的形式,不会超出Base64编码表的范围,因为2的6次方就等于64。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值