Base64编码原理与应用

Java实现BASE64编解码

公钥证书也好,电子邮件数据也好,经常要用到Base64编码,那么为什么要作一下这样的编码呢?

我们知道在计算机中任何数据都是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。
而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,
由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。
所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。

使用场景:

对证书来说,特别是根证书,一般都是作Base64编码的,因为它要在网上被许多人下载。

电子邮件的附件一般也作Base64编码的,因为一个附件数据往往是有不可见字符的。
比如http协议当中的key value字段的值,必须进行URLEncode ,
因为一些特殊符号(等号或者空格)是有特殊含义的,造成混淆,解析失败,那么需要把这些值统一处理为可见字符,传输完再解析回来。
xml格式的文件中如果想嵌入另一个xml文件。直接嵌入,那么各种标签(有两套xml标签)就混乱了,不容易被解析。怎么办?
1,把另一个xml编译成字节数组转换成逗号隔开的字符串。
2,编译成可见字符。
结果:2好些。因为1消耗的空间比原来多一倍,而2只是多三分之一。
网页中一些小图片可以直接以base64编码的方式嵌入。不用再用链接请求消耗资源。
很多比较老的协议还是只支持纯文本的,比如SMTP协议。
有时在一些特殊应用的场合,大多数消息是纯文本的,偶尔需要用这条纯文本通道传一张图片之类的情况发生的时候,就会用到base64
http虽然也是纯文本协议,但是http有针对二进制数据做特殊的规定(mime),所以用http直接传输二进制数据是可行的。
但是有些特殊情况,比如返回需要在json内部之类的。

最新文章

  1. iOS开发系列--C语言之数组和字符串
  2. 【洛谷P3385】模板-负环
  3. 【bzoj1455】罗马游戏 可并堆
  4. [UESTC1059]秋实大哥与小朋友(线段树, 离散化)
  5. 为什么我要称自己为Javascript程序员
  6. shell中截取字符串的方法总结
  7. 【spring-boot】快速构建spring-boot微框架
  8. codevs 1743 反转卡片
  9. hadoop错误org.apache.hadoop.util.DiskChecker$DiskErrorException Could not find any valid local directory for
  10. 使用strut2要注意的问题
  11. Go语言基础之切片
  12. idea取消vim模式
  13. 关于Vue中的 render: h => h(App) 具体是什么含义?
  14. java的类属性默认有this 但容易与参数重名 所以需要显性的加上this 以分区别
  15. Serial Wire Debugging the STM32 via the Bus Pirate
  16. Delphi处理Android的路径信息
  17. 根据wsdl的url,使用axis1.4生成客户端,并且对webservice进行调用(转)
  18. July 23rd 2017 Week 30th Sunday
  19. CakePHP 查询总结
  20. BZOJ4144 [AMPPZ2014]Petrol 【最短路 + 最小生成树】

热门文章

  1. Redis云端架构深入浅出
  2. step1: python & scrapy安装
  3. 007.ASP.NET MVC控制器依赖注入
  4. 关于sql优化整理一下
  5. 前端(三):JavaScript基础
  6. 二、IOC容器基本原理
  7. Linux 安装 EPEL YUM源
  8. js数组详解
  9. CSS之inline和inline-block
  10. 判断sql是否存在特定的对象