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类