Python学习笔记(二十)

时间:2022-12-26 11:36:52

一、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一致