使用load_pem_public_key()函数从PEM文件中加载公钥并进行加密操作的示例
发布时间:2024-01-05 04:48:08
load_pem_public_key()函数是Pythoncryptography库中的一个函数,用于从PEM文件中加载公钥。下面是一个使用load_pem_public_key()函数加载公钥并进行加密操作的示例:
首先,我们需要创建一个PEM文件,用于存储公钥。可以使用以下命令生成PEM文件:
openssl rsa -in private_key.pem -pubout -outform PEM -out public_key.pem
这将从名为private_key.pem的私钥文件中提取公钥,并生成一个名为public_key.pem的PEM格式的公钥文件。
在Python代码中,我们需要导入cryptography.hazmat.primitives.serialization和cryptography.hazmat.primitives.asymmetric.rsa模块,并引用load_pem_public_key()函数。
下面是一个示例代码,展示了如何使用load_pem_public_key()函数从PEM文件中加载公钥并进行加密操作:
from cryptography.hazmat.primitives.serialization import load_pem_public_key
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
# 从文件中加载公钥
with open("public_key.pem", "rb") as key_file:
public_key = load_pem_public_key(key_file.read(), backend=default_backend())
# 加密数据
data = b"Hello, World!"
encrypted_data = public_key.encrypt(
data,
padding=rsa.OAEP(mgf=rsa.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None)
)
# 打印加密后的数据
print("Encrypted Data:", encrypted_data)
在上面的代码中,我们首先使用load_pem_public_key()函数从PEM文件中加载公钥,并将加载的公钥保存到变量public_key中。然后,我们定义了要加密的数据data,并使用public_key对其进行加密操作。最后,我们打印出加密后的数据encrypted_data。
请注意,以上示例代码仅适用于使用RSA算法加密的公钥。如果使用其他非对称加密算法,需要相应地修改代码。
希望以上示例能帮助你理解如何使用load_pem_public_key()函数从PEM文件中加载公钥并进行加密操作。请注意,加密操作需要使用私钥进行解密才能获得原始数据。
