欢迎访问宙启技术站
智能推送

在Python中使用Cryptodome.PublicKey.RSA进行RSA加密

发布时间:2024-01-20 11:59:50

RSA(Rivest-Shamir-Adleman)是目前最常用的公钥加密算法之一,广泛应用于数据加密和数字签名等领域。在Python中,可以使用Cryptodome库的PublicKey模块中的RSA类来进行RSA加密。

首先,我们需要安装Cryptodome库。可以使用pip命令来安装:

pip install pycryptodome

接下来,我们可以使用Cryptodome.PublicKey.RSA的generate方法来生成RSA密钥对。示例如下:

from Cryptodome.PublicKey import RSA

# 生成RSA密钥对
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()

# 保存密钥对到文件
with open('private_key.pem', 'wb') as f:
    f.write(private_key)
    
with open('public_key.pem', 'wb') as f:
    f.write(public_key)

在上述代码中,我们生成了一个2048位的RSA密钥对,并将私钥和公钥分别保存到private_key.pem和public_key.pem文件中。

接下来,我们可以使用公钥对数据进行加密,使用私钥对加密后的数据进行解密。示例如下:

from Cryptodome.PublicKey import RSA
from Cryptodome.Cipher import PKCS1_OAEP

# 加载公钥
with open('public_key.pem', 'rb') as f:
    public_key = RSA.import_key(f.read())

# 加密
cipher_rsa = PKCS1_OAEP.new(public_key)
encrypted_data = cipher_rsa.encrypt(b'This is a secret message')

# 打印加密后的数据
print(encrypted_data)

# 加载私钥
with open('private_key.pem', 'rb') as f:
    private_key = RSA.import_key(f.read())

# 解密
cipher_rsa = PKCS1_OAEP.new(private_key)
decrypted_data = cipher_rsa.decrypt(encrypted_data)

# 打印解密后的数据
print(decrypted_data.decode())

在上述代码中,我们首先加载public_key.pem文件中的公钥,并使用PKCS1_OAEP.new方法创建了一个RSA加密实例cipher_rsa。然后,我们调用encrypt方法对数据进行加密,得到加密后的数据encrypted_data。接着,我们加载private_key.pem中的私钥,并使用同样的方式创建了一个RSA解密实例cipher_rsa。最后,我们调用decrypt方法对加密后的数据进行解密,得到解密后的数据decrypted_data,并将其打印出来。

使用RSA算法进行数据加密可以保证数据的安全性,使其只能被拥有相应私钥的人解密。在实际应用中,需要注意保护私钥的安全,避免私钥泄漏导致数据被解密。