如何将 public 键从字符串类型转换为 PEM
how convert a public key from string type to PEM
我有问题需要帮助。
我需要从发件人向收件人发送一条消息,这条消息包含签名数据和 public 密钥和其他内容。请注意,我使用的是证书 x509(public 密钥来自证书)。在接收方,我必须验证数据的签名(真实与否)。因此,我使用发件人的 public 密钥进行验证。但是我遇到了一个问题,public 键是字符串格式。我尝试转换它。但不幸的是,我没有找到任何解决方案。
这是将要发送的消息:
data['message'] = data
data['_signature'] = self.sign_data(data)
data['_public_key'] = str ( self.certificate.public_key())
您不能使用str将public键(certificate.public_key())转换成字符串,因为此方法将return键对象。
如果您需要将 public 密钥编码为 PEM 字符串,那么您必须通过序列化为 PEM 字符串来正确执行此操作:
public_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
然后从另一端,您可以加载 PEM 密钥并使用它:
from cryptography.hazmat.primitives import serialization
public_key2 = serialization.load_pem_public_key(public_pem, default_backend())
我有问题需要帮助。 我需要从发件人向收件人发送一条消息,这条消息包含签名数据和 public 密钥和其他内容。请注意,我使用的是证书 x509(public 密钥来自证书)。在接收方,我必须验证数据的签名(真实与否)。因此,我使用发件人的 public 密钥进行验证。但是我遇到了一个问题,public 键是字符串格式。我尝试转换它。但不幸的是,我没有找到任何解决方案。
这是将要发送的消息:
data['message'] = data
data['_signature'] = self.sign_data(data)
data['_public_key'] = str ( self.certificate.public_key())
您不能使用str将public键(certificate.public_key())转换成字符串,因为此方法将return键对象。
如果您需要将 public 密钥编码为 PEM 字符串,那么您必须通过序列化为 PEM 字符串来正确执行此操作:
public_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
然后从另一端,您可以加载 PEM 密钥并使用它:
from cryptography.hazmat.primitives import serialization
public_key2 = serialization.load_pem_public_key(public_pem, default_backend())