非对称加密(RSA)

非对称加密(RSA)

非对称加密.加密和解密的秘钥不是同一个秘钥.这里需要两把钥匙.一个公钥,一个私钥.公钥发送给客户端.
发送端用公钥对数据进行加密.再发送给接收端,接收端使用私钥来对数据解密.由于私钥只存放在接受端这边.
所以即使数据被截获了.也是无法进行解密的.

公钥和私钥

常见的非对称加密算法:RSA,DSA等等,我们就介绍一个.RSA加密,也是最常见的一种加密方案

  1. 创建公钥和私钥
from Crypto.PublicKey import RSA

# 生成密钥对
key = RSA.generate(1024)

with open('rsa.public_key.pem', 'wb') as f:
    f.write(key.publickey().export_key())

with open('rsa.private_key.pem', 'wb') as f:
    f.write(key.export_key())
  1. 数据加密
# 公钥 加密 私钥 解密

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import base64

data = "我喜欢你"
with open("rsa.public_key.pem", 'r') as f:
    public_key = f.read()
    # 构建一把公钥对象
    rsa = RSA.importKey(public_key)
    # 算法对象
    cipher = PKCS1_v1_5.new(rsa)
    # 数据加密
    encrypt_data= cipher.encrypt(data.encode())
    # base64编码
    base64_encrypt_data = base64.b64encode(encrypt_data)
    print('加密后:', base64_encrypt_data)
    print('加密后字符串:', base64_encrypt_data.decode())

解密

import base64
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5


base64_encrypt_data = "KS6e5GzXN9lhSOtJnaF+MckXLgFI07nzyC1MvQmOaeIDzfAcPzcvyXftrpsZBjh9qWgbhKVMR31RRlWce16lh7iF1/uhHY/gxBDH5RYj1sifEjTrujdiFzNHwUFNdFtPfMO2U4QCLc5o1jp56+3E1guEKLanRHicfZ6cUkldUqY="

# 1. base64解码
base64_decrypt_data = base64.b64decode(base64_encrypt_data)

# 2.解密数据-----私钥
with open("rsa.private_key.pem", 'r') as f:
    private_key = f.read()

    # 构建一把私钥对象
    rsa_key = RSA.importKey(private_key)
    # 算法对象
    cipher = PKCS1_v1_5.new(rsa_key)
    # 数据解密
    decrypt_text = cipher.decrypt(base64_decrypt_data, None)
    # decrypt_text = cipher.decrypt(base64.b64decode(base64_encrypt_data), None)


    print(decrypt_text.decode('utf-8'))
posted @ 2024-07-16 11:02  流年中渲染了微笑  阅读(1)  评论(0编辑  收藏  举报