一、Base64编码
Base64 编码是一种简易的适用于加密非关键信息场合的编码,广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能为=,生成的编码都是ascii字符
Base64编码的优点:速度快、ascii字符、肉眼不可解
Base64编码的缺点:编码比较长、比较容易破解、仅适用于加密非关键信息场合
二、base64
在Python语言中提供了对Bse64编码方式的支持,例如:
import base64
# 创建一个待加密字符
s = "中国,您好!"
# 将字符转变为二进制形式
b = s.encode("utf-8")
# 使用base64对字符串进行加密
b1 = base64.b64encode(b)
# 使用base64对字符串进行解密
str = base64.b64decode(b1)
# 将字符编码转变为Unicode编码显示
print(str.decode())
三、struct介绍
Python中没有提供专门用来处理字节的数据类型,但由于b''可以表示字节,所以也可以将字节数组看成二进制字符串
Python中没有提供相应的专门用于处理字节的二进制数据类型,但提供了struct模块,可以实现将字节数据转换为相应的Python内置类型,以便于Python与其他语言的交互
import struct
# 定义两个整型字节数据
a = 20
b = 30
# 将数据类型转变为字节数组,也可以理解为字节流
# struct.pack(frm,v1,v2)
# i表示C语言中的整型int类型,ii表示两个整型数据
str = struct.pack("iI",a,b)
# 将字节流转变为Python的数据类型
a,b = struct.unpack("ii",str)
Python与C语言中的对应格式:
格式符 | C语言类型 | Python类型 | 注 |
---|---|---|---|
x | pad byte | no value | |
c | char | string of length 1 | |
b | signed char | integer | |
B | unsigned char | integer | |
? | _Bool | bool | |
h | short | integer | |
H | unsigned short | integer | |
i | int | integer | |
I | unsigned int | integer or long | |
l | long | integer | |
L | unsigned long | long | |
q | long long | long | |
Q | unsigned long long | long | |
f | float | float | |
d | double | float | |
s | char[] | string | |
p | char[] | string | |
P | void * | long |
三、hashlib
hashlib提供了常见的摘要算法,如MD5、SHA1等
摘要算法又称哈希算法或者散列算法,它通过一个函数,将任意长度的数据转换为一个长度固定的数据串,通常使用十六进制的字符串表示
import hashlib
# 获取一个md5的对象
md5 = hashlib.md5()
# 更新md5中为文本信息
md5.update("hello world".encode("utf-8"))
# 获取md5值
print(md5.hexdigest())
SHA1的使用方式和MD5一致