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

Python中使用Crypto.PublicKey.RSA生成加密密钥对

发布时间:2023-12-17 16:46:01

在Python中,可以使用Crypto.PublicKey.RSA模块生成加密密钥对。这个模块是pycryptodome库的一部分。以下是一个使用Crypto.PublicKey.RSA生成加密密钥对的例子:

from Crypto.PublicKey import RSA

# 生成一个2048位的RSA密钥对
key = RSA.generate(2048)

# 从私钥中提取公钥
public_key = key.publickey()

# 将私钥和公钥保存到文件
with open('private_key.pem', 'wb') as f:
    f.write(key.export_key('PEM'))

with open('public_key.pem', 'wb') as f:
    f.write(public_key.export_key('PEM'))

在上述代码中,首先导入RSA模块。然后使用generate方法生成一个2048位的RSA密钥对。接下来,通过调用publickey方法从私钥中提取公钥。最后,将私钥和公钥保存到文件中。

生成的密钥对是以PEM格式保存的。PEM格式是一种常见的密钥和证书格式,可以使用文本编辑器打开查看。PEM文件通常以.pem.crt为文件扩展名。

为了使用生成的密钥对进行加密和解密操作,需要加载密钥对。以下是一个加载RSA密钥对并使用它们进行加密、解密操作的例子:

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

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

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

# 创建一个PKCS1_OAEP加密器
cipher = PKCS1_OAEP.new(public_key)

# 加密数据
encrypted_data = cipher.encrypt(b'Hello, World!')

# 创建一个PKCS1_OAEP解密器
decipher = PKCS1_OAEP.new(private_key)

# 解密数据
decrypted_data = decipher.decrypt(encrypted_data)

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

在上述代码中,首先通过import_key方法加载私钥和公钥。然后创建一个PKCS1_OAEP加密器,并使用公钥初始化它。接下来,使用加密器的encrypt方法对数据进行加密。然后,创建一个PKCS1_OAEP解密器,并使用私钥初始化它。最后,使用解密器的decrypt方法对加密的数据进行解密,得到原始数据。

以上就是使用Crypto.PublicKey.RSA生成加密密钥对的示例。请注意,在实际使用中,需要妥善保管私钥,并确保只有授权的实体可以访问它。