python使用base64

一、声明

本文为学习笔记,转载请标明原文链接、作者、参考博文链接。

二、base64编码是什么?

base64是网络上最常见的用于传输8Bit字节码的编码方式之一。
Base64就是一种基于64个可打印字符来表示二进制数据的方法。
RFC2045~RCF2049上面有MIME的详细规范。

三、为什么要使用base64编码?

Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据需要将二进制数据转换为字符数据。然而直接转换是不行的。因为网络传输只能传输可打印字符。什么是可打印字符?在ASCII码中规定,0~31、127这33个字符属于控制字符,32~126这95个字符属于可打印字符,也就是说网络传输只能传输这95个字符,不在这个范围内的字符无法传输。那么该怎么才能传输其他字符呢?其中一种方式就是使用Base64。

四、base64的几种形式

1. 标准base64

2. 针对url的base64

标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

为解决此问题,可采用一种用于URL的改进Base64编码,它在末尾填充’=’号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

3. 针对正则的base64

另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。

五、python的base64模块

import base64
---------------------------------------------------------------------------------------------------------------------
|        方法                                |                        概述                                          
|b64encode(s, altchars=None)                 | 对  bytes-like object s 进行Base64编码,并返回编码后的bytes          
|
|b64decode(s, altchars=None, validate=False) | 解码 Base64 编码过的bytes-like object 或 ASCII 字符串s 并返回解码    
过的  bytes                                                                                                        
|
|standard_b64encode(s)                       | 编码  bytes-like object s,使用标准 Base64 字母表并返回编码过的bytes 
|
|standard_b64decode(s)                       | 解码  bytes-like object  或 ASCII 字符串  s,使用标准 Base64 字母表  
并返回编码过的  bytes                                                                                             
|
|urlsafe_b64encode(s)                        | 编码  bytes-like object s,使用 URL 与文件系统安全的字母表,使用-以  
及 _ 代替标准 Base64 字母表中的  +和  /,返回编码过的  bytes,结果中可能包含  =                                   
|
|urlsafe_b64decode(s)                        | 解码  bytes-like object  或 ASCII 字符串  s,使用 URL 与文件系统安全 
的字母表,使用  -  以及  _  代替标准 Base64 字母表中的  +  和  /,返回解码过的  bytes                               
----------------------------------------------------------------------------------------------------------------------

示例代码:
def base64_calculate(content):
    return str((base64.standard_b64encode(content)),encoding='utf-8')
if __name__ == '__main__':
  content = 'test'
  print(base64_calculate(content))

六、参考博文

https://blog.csdn.net/karven_/article/details/90723362
https://blog.csdn.net/qq_20545367/article/details/79538530
百度百科
https://baike.baidu.com/item/base64/8545775?fr=aladdin
rfc
https://datatracker.ietf.org/doc/rfc2045/

Previous Post

python连接字符串的几种方式

Next Post

psutil模块

Related Posts