base64简介

          base64编码是为了保证消息传输过程中内容的完整性,而对消息的安全性的作用不大,且不完全符合柯克霍夫原则,因此不算是一种加解密方式。下面由base64的来历,实现几方面来介绍。

一、为什么是base64

  说起base64,就需要提下Email传输。最早的Email只被允许传输ascii字符,ascii字符只有7位,因此,Email能够传输的内容很有限。在某些邮件主机上,由于只允许传输ascii字符,因此可能会截掉字符的最高位,将其置为0,这样中文字符在传输过程中将出现乱码的情况。为了扩展Email的传输内容,使其可以传输更多的内容,特提出了MIME编码规范。而base64编码是实现MIME规范的一种实现方式(另一种编码方式是quoted-printable)。


  base64编码使用6位表示一个字符,使其可以被当作ascii字符解析,因此可以在全球所有的计算机上使用,而且编码后的值对消息有一定的加密作用,因此常被用于网络传输中。此外,在网络中对图片文件进行base64编码可以减少http请求次数。例如,将编码后的图片文件放在css文件中,当拿到css文件时,即可拿到这个图片文件,省掉了获取图片的http请求。这可用于在获取到真正图片前,填充图片区域。


  这里再提下base64和UTF-8编码在网络传输方面的区别。UTF-8(8-bit Unicode Transformation Format)编码,是用于传输Unicode码值的一种编码方式。由于Unicode码值较长,因此可以使用UTF-8编码来提高Unicode消息的传输效率,而base64是为了支持某些只识别ascii字符的系统。一般情况下,在网络传输过程中,对一段需要传输的Unicode内容,需要先进行UTF-8编码,减少消息长度,然后对编码后的内容进行base64编码,使其可以任意网络系统中传输。

二、base64的实现

        base64将6bit作为一个字节,因此base64可以有64种码值,包含1-9,a-z,A-Z,以及“+”、“/”,还有“=”作为填充位。码值如下:


  base64编码过程如下:

  • 将3个字节作为一组进行编码
  • 3个字节对应24bit,因此需要4个base64的字节
  • 若消息序列长度不是3的倍数,最后一组不足3字节,用0补齐
  • 将8bit的字节转换为6bit的字节
  • 将6bit的字节首部添加两个0,转为8bit字节
  • 对转换后的字节进行base64编码

      如对mzwu进行编码(参考http://www.jb51.net/article/29799.htm):

 

  如上,二进制长度为4字节,因此需要填充两位,最终的base64码值有两位“=”。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值