先对字符串做msd加密,再做RSA加密
# 背景 # 计算机字节串(UTF-8 编码):b'\xe4\xbd\xa0\xe5\xa5\xbd' # 解码为人类语言字符串(Unicode 编码):'你好' # 第一部分 md5加密 # md5加密 对字节加密,返回的结果需要将字节转16进制字符串 # 导包 import hashlib def get_md5(data,salt=' '): data = hashlib.md5(data.encode())# md5加密之前需要先将处理对象 转字节 计算机只能做字节串 计算机语言 # 处理之后需要将处理后的数据 转字符串 # hex 是"十六进制" 的缩写; # digest 是 "摘要" 的意思,特指通过哈希算法生成的固定长度的数据 md5_data = data.hexdigest() # 将计算机语言转成人类的语言 return md5_data # 第二部分 对md5产生的数据 做RSA加密 # 导包 from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 as PKCS1_cipher # PKCS1: Public-Key Cryptography Standards 1,公钥密码学标准1。 # Cipher:指加密和解密数据的过程,或者指用于加密和解密的算法。 import base64 def get_rsa(md5_data): # 读 公钥 with open('./public.pem') as file: # 将内容赋值给公钥 public_key_file=file.read() # 调用RSA类 并调用 放入公钥方法 实例化了一个毒药瓶子 public_key=RSA.import_key(public_key_file) # 实例化出来一个秘书 秘书手里有两个东西 # 一个是毒药瓶子 也就是加密的公钥,外人会被毒死,自己人不会 cipher = PKCS1_cipher.new(public_key) # 另一个是被加密的信封 md5_data, # 秘书做对信封做加密动作 # 步骤1 加密 # 步骤2 将md5处理过的数据转化为字节类型 为了被rsa加密 # 步骤3 将加密的数据转64位字节; base64.b64encode()函数编码后的结果是一个字节串(bytes) # 步骤4 注意 这里使用64位是因为开发设计这个接口的时候 要求了64位; rsa_data = base64.b64encode(cipher.encrypt(md5_data.encode()))# 计算机的字节串 做加密操作 # 步骤4 将处理结果decode转为字符串 return rsa_data.decode() # 计算机语言转换为人类可读的语言 # 实例化 if __name__ == '__main__': result1=get_md5('fqs') result2=get_rsa(result1) print(result2)