Python里的base64编码

base64编码,非常简单的东西,但是感觉在python里有点混乱,这里罗列一下:

1. binascii.b2a_base64()和binascii.a2b_base64()

后面的一些库函数都是基于binascii的,binascii是一个C语言实现的内置库。binascii提供了很多编码算法,以b2a_和a2b_打头。b2a_是编码,a2b_是解码,猜测是binary to ascii-string的缩写吧。

特点:非url safe,即有/和+字符,而且末尾还有一个多余的\n

2. base64.standard_b64encode()和base64.standard_b64decode()

所谓的标准编码和解码,其实是对base64.b64encode()和base64.b64decode()的简单封装,就是去掉了第二个参数。

特点:非url safe,去掉了末尾多余的\n

3. base64.b64encode()和base64.b64decode()

是对binascii结果的封装处理,首先是去掉了末尾的\n,然后是新加了一个参数叫altchars,该参数要么为None,要么长度为2的bytes,分别对应+与/所要替换的目标字符。

特点:altchars=None就是非url safe的,altchars=b'-_',就是url safe的。

4. base64.urlsafe_b64encode()和base64.urlsafe_b64decode()

从名字也容易看出来,就是将+/替换成了-_,如此而已

特点:url safe编码

5. base64.encodebytes()和base64.decodebytes()

这个名字比较容易费解,因为上面的函数都是只接受bytes为入参的,不支持str的。而实际它干的事情是把binascii的结果按76个字符一行拆开,即每76个字符插入一个\n,只是为了美观而已。

特点: 非url safe,末尾有多余\n,而且每76个字符多一个\n

6. base64.encodestring()和base64.decodestring()

废弃了,不要使用。

发表于 2020年06月13日 13:12   评论:0   阅读:2792  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo