使用load_pem_public_key()函数从PEM文件中读取公钥并进行RSA加密
发布时间:2024-01-05 04:45:46
在Python中,可以使用cryptography库来加载和使用PEM格式的公钥,并用它对数据进行RSA加密。cryptography是一个流行的Python密码学库,提供了对常见密码学任务的支持。
首先,确保已经安装了cryptography库。可以使用pip进行安装:
pip install cryptography
然后,需要准备一个包含RSA公钥的PEM文件。PEM(Privacy Enhanced Mail)是一种基于ASCII的文件格式,用于存储密钥和证书。
假设我们有一个名为public_key.pem的文件,包含RSA公钥。接下来,我们可以使用以下代码从PEM文件加载公钥,并使用它对数据进行加密:
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
# 加载PEM格式的公钥
with open("public_key.pem", "rb") as key_file:
public_key = serialization.load_pem_public_key(
key_file.read(),
backend=None
)
# 数据准备
data = b"Hello, World!"
# 使用公钥加密数据
encrypted_data = public_key.encrypt(
data,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# 打印加密后的数据
print(encrypted_data)
在上面的代码中,我们首先使用open()函数打开PEM文件,并使用read()函数读取文件内容。然后,使用load_pem_public_key()函数从PEM文件中加载公钥。最后,我们使用encrypt()方法对数据进行加密。
encrypt()方法接受两个参数:要加密的数据和加密时使用的填充方式。在这个例子中,我们使用OAEP填充(Optimal Asymmetric Encryption Padding)。OAEP是一种公钥密码学填充方案,提供了额外的安全性。
最后,打印加密后的数据。
请注意,上述代码中的public_key.pem是一个示例文件名,您需要将其替换为实际的PEM文件的路径。
这就是使用load_pem_public_key()函数从PEM文件中加载公钥并对数据进行RSA加密的示例。
