如何使用load_pem_public_key()函数从PEM文件中加载DER编码的公钥
发布时间:2024-01-05 04:47:50
使用load_pem_public_key()函数可以从PEM文件中加载DER编码的公钥。下面是一个使用load_pem_public_key()函数的示例:
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa
# 生成RSA密钥对并保存到文件
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)
# 将公钥保存到PEM文件
public_key_pem = private_key.public_key().public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
with open('public_key.pem', 'wb') as f:
f.write(public_key_pem)
# 从PEM文件中加载DER编码的公钥
with open('public_key.pem', 'rb') as f:
public_key_pem = f.read()
public_key = serialization.load_pem_public_key(public_key_pem)
# 使用加载的公钥进行加密
message = b'This is a secret message.'
ciphertext = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# 输出加密结果
print(ciphertext)
在这个例子中,我们首先使用rsa.generate_private_key()函数生成RSA密钥对,并将公钥保存到PEM文件中。
然后,我们使用load_pem_public_key()函数从PEM文件中加载DER编码的公钥。
接下来,我们使用加载的公钥对一个消息进行加密。在加密过程中,我们使用了OAEP填充和SHA-256哈希算法。
最后,我们输出加密结果。
需要注意的是,这个示例中使用的库是cryptography库。请确保已经安装该库并将其导入项目中。
希望这个例子对您有所帮助!
