先对字符串做msd加密,再做RSA加密

发布时间 2023-07-26 12:27:26作者: 胖豆芽
#  背景
# 计算机字节串(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)