Base64 | Base32 | Base16编码和解码小结

1.Base64简介

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。base64编码一般有下面两个用途:

a)所有的二进制文件,都可以因此转化为可打印的文本编码(都变成ASCII码可打印字符),使用文本软件进行编辑;

b)能够对文本进行简单的加密。

说白了,一段由01组成的串或文件,都能按照base64的编码规则转换成一段由64个字符任意组合的串。

 

2.Base64编码规则

所谓Base64,就是说选出64个字符----小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"(再加上作为垫字的"=",实际上是65个字符)----作为一个基本字符集。然后,其他所有符号都转换成这个字符集中的字符。

具体来说,转换方式可以分为四步:

第一步,将每三个字节作为一组,一共是24个二进制位
第二步,将这24个二进制位分为四组,每个组有6个二进制位
第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节
第四步,根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值
如下为Base64编码映射表:

Base64 | Base32 | Base16编码和解码小结_第1张图片

3.Base64编码的一个例子

举一个具体的实例,演示英语单词Man如何转成Base64编码:

Base64 | Base32 | Base16编码和解码小结_第2张图片


备注:

(1)Base64将三个字节转化成四个字节,因此Base64编码后的文本,会比原文本大出三分之一左右

(2)对于不满3个字节的东东,就需要加上base64编码中的垫字符来补充

(3)Base64编码是可逆的,所以有Base64编码encode和解码decode

(4)Base64主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输(因为一些二进制字符在传输协议中属于控制字符,不能直接传送)。另外,还有一些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。base64其实不是安全领域下的加密解密算法。虽然有时候经常看到所谓的base64加密解密。其实base64只能算是一个编码算法,对数据内容进行编码来适合传输。虽然base64编码过后原文也变成不能看到的字符格式,但是这种方式很初级,很简单。


4.Base32和Base16

在Base家族中还有Base32和Base16,其实Base32/Base16和Base64目的是一样的,只是具体的编码规则的不一样罢了。Base32编码将二进制文件转换成由32个ASCII字符组成的文本;Base16编码则将二进制文件转换成由16个字符组成的文本。

附上Base32编码映射表如下:

Base64 | Base32 | Base16编码和解码小结_第3张图片

附上Base16编码映射表如下:

Base64 | Base32 | Base16编码和解码小结_第4张图片


学习资料参考于:

http://www.ruanyifeng.com/blog/2008/06/base64.html

http://blog.csdn.net/instruder/article/details/5963344

你可能感兴趣的:(Unknown)