1.1   Base64编码原理

1.1.1 概要:

Base64是通讯传输中较为常见的编码方式之一。

(注意是编码算法,而非加密算法)

参数传输的过程中会经常遇到的一种情况:使用英文不会涉及到乱码,但一旦涉及到其他语言就可能会出现乱码情况以及网络上传输的字符并不全是可打印的字符,例如视频、图片等。

Base64的出现就是为了解决此问题,它基于64个可打印的字符来表示二进制的数据的一种方法。

电子邮件出现时,只能传输英文,但随用户增加,中文、日文等文字的用户需求增加,但字符并不能被服务器或网关进行有效处理,因此Base64就出现了。随之,Base64在URL、Cookie、网页传输少量二进制文件中也有相应的使用。

1.1.2 编码原理:

我们都知道,计算机数据以字节(byte)为存储单位, 一个字节由组成8位(bit)二进制组成。那么每一位就则是最小的信息单位。

所以1Byte=8bit

(本文中的byte作为计算存储容量的计量单位。

Byte也是一种无符号的数据类型,取值0-255,且不可取负数。但不在本文章的叙述范围内,暂不做考虑。)

第一步,将待转换的字符串每三个字节分为一组,每个字节占8bit,那么共有24个二进制位。

第二步,将上面的24个二进制位每6个一组,共分为4组。

第三步,在每组前面添加两个0,每组由6个变为8个二进制位,总共32个二进制位,即四个字节。

第四步,根据Base64编码对照表获得对应的值。

例如:

1.1.3 程序函数

关于编程

python内置的base64可直接进行base64编解码。

PHP里也有相关函数

base64_encode()

base64_decode(string data)

  

Java存在 org.apache.commons.codec.binary.Base64类

最新文章

  1. javascript的执行顺序(转载)
  2. photoshop菜单显示不全的解决方法
  3. click和onclick的区别
  4. hdu 5532 Almost Sorted Array
  5. c#加密汇总【粘】
  6. 读书笔记_Effective_C++_条款二十五: 考虑写出一个不抛出异常的swap函数
  7. oracle&&Sqlserver获取表名列名主键及数据类型
  8. 用 gulp.spritesmith 自动化雪碧图
  9. springmvc上传文件方法及注意事项
  10. 原生js移动端列表无缝间歇向上滚动
  11. 基于支付系统真实场景的分布式事务解决方案效果演示: http://www.iqiyi.com/w_19rsveqlhh.html
  12. 读取Json,并替换json中的指定字符
  13. css层叠规则,优先级算法
  14. pc端结合canvas实现简单签名功能
  15. Android逆向之静态分析
  16. blfs(systemd版本)学习笔记-编译安装配置dhcpcd
  17. Revit API过滤管道系统类型
  18. 杜伦大学提出GANomaly:无需负例样本实现异常检测
  19. Eclipse使用xdoclet1.2.3 生成hibernate配置文件和映射文件
  20. WindowsPhone模拟简易Toast弹出框

热门文章

  1. ASP.NET MVC5快速入门--MyFirstWeb并发布到Windows Azure上
  2. Android Java调用Qt写的so库
  3. ZooKeeper学习第一期---Zookeeper简单介绍(转)
  4. ABP开发框架前后端开发系列---(12)配置模块的管理
  5. Kali Linux Web渗透测试手册(第二版) - 1.0 - 渗透测试环境搭建
  6. linux配置多个tomcat
  7. Linux 配置 history 命令显示操作时间、用户和登录 IP
  8. 5分钟快速部署PESCMS TEAM 团队任务管理系统开发版
  9. 正确写网站title、keywords、description
  10. 浅入深出Vue:子组件与数据传递