pycryptodome库可以生成RSA密钥对,并且保存为PEM格式吗?请给出示例
时间: 2024-03-21 09:39:14 浏览: 168
`pycryptodome` 库也可以生成 RSA 密钥对,并将其保存为 PEM 格式。具体的步骤如下:
1. 首先需要安装 `pycryptodome` 库,可以使用以下命令进行安装:
```
pip install pycryptodome
```
2. 然后可以使用以下代码生成 RSA 密钥对,并将其保存为 PEM 格式:
```python
from Crypto.PublicKey import RSA
# 生成 RSA 密钥对
key = RSA.generate(2048)
# 将密钥对保存为 PEM 格式
private_pem = key.export_key()
public_pem = key.publickey().export_key()
# 打印密钥对
print("私钥:\n", private_pem.decode())
print("公钥:\n", public_pem.decode())
```
在上面的代码中,使用 `RSA.generate()` 方法生成一个 2048 位的 RSA 密钥对,然后分别使用 `key.export_key()` 和 `key.publickey().export_key()` 方法将密钥对保存为 PEM 格式。默认情况下,生成的密钥对并没有加密。
3. 生成密钥对之后,可以使用以下代码进行加密和解密:
```python
from Crypto.Cipher import PKCS1_OAEP
# 加密
message = b"Hello, world!"
cipher = PKCS1_OAEP.new(key.publickey())
ciphertext = cipher.encrypt(message)
# 解密
cipher = PKCS1_OAEP.new(key)
plaintext = cipher.decrypt(ciphertext)
print("原始消息:", message)
print("加密后消息:", ciphertext)
print("解密后消息:", plaintext)
```
在上面的代码中,使用 `PKCS1_OAEP.new()` 方法分别生成加密和解密的对象,并分别调用 `encrypt()` 和 `decrypt()` 方法对消息进行加密和解密。在加密和解密时,需要使用相同的填充算法,这里使用的是 OAEP 填充算法。
阅读全文