Base64编码的深入认识与理解

作者:viclee108 时间:2023-03-05 08:44:01 

Base64编码的深入认识与理解

  之前在很多业务中都有见过或者用到过Base64编码,但一直一知半解,没有对它有一个深入的认识和理解。今天就来聊一聊Base64编码的问题。

       首先要明确的是,Base64是一种可逆的编码方式,提到编码方式,我们首先想到的肯定是Ascii、GBK、Unicode这些常用的编码方法,那么Base64与这些编码方式有什么不同呢?

       简单来将,Base64就是一种用64个Ascii字符来表示任意二进制数据的方法。主要用于将不可打印的字符转换成可打印字符,或者简单的说将二进制数据编码成Ascii字符。Base64是网络上最常用的传输8bit字节数据的编码方式之一。

       Base64的原理其实很简单,首先,需要准备一个包含64个字符的表格(如下表),0~63分别对应了唯一一个字符,比如18对应的是S。

Base64编码的深入认识与理解

       然后,对二进制数据进行处理,每3个字节一组,一共3x8=24bit,将这24bit划分为4组,每组正好6个bit,6bit的数据刚好可以表示0~63的范围,也就可以对应上表的64个字符。这样我们就得到了4个数字作为索引,然后查表获得相应的4个字符,就得到了编码后的字符串。下表将整个处理的过程描述的很清楚。

文本Man
ASCII编码7797110
二进制位010011010110000101101110
索引1922546
Base64编码TWFu

        所以,Base64编码会把3字节的二进制数据编码为4字节的文本数据,长度增加为原来的4/3。如果要编码的二进制数据不是3的倍数,最后会剩下1个或2个字节怎么办?此时,需在原数据后面添加1个或2个零值字节,使其字节数是3的倍数。然后,在编码后的字符串后面添加1个或2个等号“=”,表示所添加的零值字节数。解码的时候,会自动去掉。

       下面来看一下Base64编码的优缺点。

        优点:可以将二进制数据转换成可打印字符,方便传输数据;对数据进行简单的加密,肉眼安全。

        缺点:内容编码后的体积会变大,编码和解码需要额外的工作量。

       它的使用场景有很多,比如将图片等资源文件以Base64编码形式直接放于代码中,使用的时候反Base64后转换成Image对象使用;有些文本协议不支持不可见字符的传递,只能转换成可见字符来传递信息。有时在一些特殊的场合,大多数消息是纯文本的,偶尔需要用这条纯文本通道传一张图片之类的情况发生的时候,就会用到Base64,比如多功能Internet 邮件扩充服务(MIME)就是用Base64对邮件的附件进行编码的。

      感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:http://blog.csdn.net/goodlixueyong/article/details/52132250

标签:Base64,编码
0
投稿

猜你喜欢

  • python批量导出导入MySQL用户的方法

    2024-01-29 02:58:42
  • 关于Python下的Matlab函数对应关系(Numpy)

    2023-03-15 07:25:32
  • javascript实现无法关闭的弹框

    2024-05-08 09:32:13
  • asp生成不需要数据库的中奖码

    2008-07-18 12:31:00
  • JS获取当前时间的年月日时分秒及时间的格式化的方法

    2024-04-17 10:23:00
  • 详解用Python爬虫获取百度企业信用中企业基本信息

    2022-07-27 18:49:52
  • 推荐系统MostPopular算法的Python实现方式

    2022-04-21 14:44:24
  • 如何编写TOP10之类的排行榜?

    2009-11-07 18:45:00
  • mpvue中配置vuex并持久化到本地Storage图文教程解析

    2024-04-28 09:25:55
  • MySQL数据库生产环境的维护工作总结的经验

    2011-12-01 10:20:52
  • Java连接mysql数据库代码实例程序

    2024-01-22 03:01:26
  • python实现超市商品销售管理系统

    2021-01-06 22:18:14
  • Python Requests模拟登录实现图书馆座位自动预约

    2022-01-31 00:25:46
  • 浅谈keras2 predict和fit_generator的坑

    2021-05-13 16:30:36
  • Python selenium get_cookies获取cookie不全的解决方案

    2021-09-17 07:39:52
  • 详解python3中的真值测试

    2022-03-10 13:56:59
  • ASP 内建六大对象简介

    2009-06-04 18:08:00
  • 如何基于python操作json文件获取内容

    2023-03-30 15:48:04
  • MySQL中datetime时间字段的四舍五入操作

    2024-01-28 08:00:40
  • Python安装Flask环境及简单应用示例

    2021-09-19 10:07:24
  • asp之家 网络编程 m.aspxhome.com