python 常用内建模块(3) base64
2017-01-06 11:19
232 查看
Base64是一种用64个字符来表示任意二进制数据的方法。
用记事本打开
Base64的原理很简单,首先,准备一个包含64个字符的数组:
然后,对二进制数据进行处理,每3个字节一组,一共是
这样我们得到4个数字作为索引,然后查表,获得相应的4个字符,就是编码后的字符串。
Base64编码会把3字节的二进制数据编码为4字节的文本数据,长度增加33%,好处是编码后的文本数据可以在邮件正文、网页等直接显示。如果原始数据不是3n字节则在原始数据的后面添加m(0<=m<=2)个\x00(ASCII 中的null字符)填充,并在base64编码之后添加m个=号表示补充了m个字节数据
由于标准的Base64编码后可能出现字符
Base64是一种通过查表的编码方法,不能用于加密,即使使用自定义的编码表也不行。
Base64适用于小段内容的编码,比如数字证书签名、Cookie的内容等。
由于
用记事本打开
exe、
jpg、
Base64的原理很简单,首先,准备一个包含64个字符的数组:
['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/']
然后,对二进制数据进行处理,每3个字节一组,一共是
3x8=24bit,划为4组,每组正好6个bit:
这样我们得到4个数字作为索引,然后查表,获得相应的4个字符,就是编码后的字符串。
Base64编码会把3字节的二进制数据编码为4字节的文本数据,长度增加33%,好处是编码后的文本数据可以在邮件正文、网页等直接显示。如果原始数据不是3n字节则在原始数据的后面添加m(0<=m<=2)个\x00(ASCII 中的null字符)填充,并在base64编码之后添加m个=号表示补充了m个字节数据
>>> import base64 >>> base64.b64encode(b'binary\x00string') b'YmluYXJ5AHN0cmluZw==' >>> base64.b64decode(b'YmluYXJ5AHN0cmluZw==') b'binary\x00string'
由于标准的Base64编码后可能出现字符
+和
/,在URL中就不能直接作为参数,所以又有一种"url safe"的base64编码,其实就是把字符
+和
/分别变成
-和
_:
>>> base64.b64encode(b'i\xb7\x1d\xfb\xef\xff') b'abcd++//' >>> base64.urlsafe_b64encode(b'i\xb7\x1d\xfb\xef\xff') b'abcd--__' >>> base64.urlsafe_b64decode('abcd--__') b'i\xb7\x1d\xfb\xef\xff
Base64是一种通过查表的编码方法,不能用于加密,即使使用自定义的编码表也不行。
Base64适用于小段内容的编码,比如数字证书签名、Cookie的内容等。
由于
=字符也可能出现在Base64编码中,但
=用在URL、Cookie里面会造成歧义,所以,很多Base64编码后会把
=去掉:
相关文章推荐
- python 常用的模块(base64)转
- Python 常用内置模块(加密模块 hashlib,Base64)
- Base64 编码原理简介和python的base64模块的使用
- 我接触到的常用python模块
- python常用模块
- Python常用模块
- Python常用模块
- [转载] Python 常用模块整理
- 常用的python模块
- python基础31[常用模块介绍]
- python常用模块之一
- Python里的OS模块常用函数说明
- [转]常用的python模块及安装方法
- Python常用模块种类的系统介绍及与操作系统相关的调用和操作
- Python常用模块种类的系统介绍及与操作系统相关的调用和操作
- [转载]Python学习笔记三(常用模块)
- python整理七——数字的一些常用模块
- 常用的python模块
- python 常用函数及模块z
- Python常用模块