如何从 public 字节或 python 中的 public 数字恢复 EC public 密钥(加密模块)
How to restore a EC public key from public bytes or public numbers in python (cryptography module)
我正在尝试将 public 密钥发送到远程对等点以计算共享密钥。
我使用的是 python 的 cryptography
模块,我使用的是 ec
而不是 rsa
。
我可以发送 public 个号码:
value = ecdh_public_key.public_numbers()
或 public 字节:
value = ecdh_public_key.public_bytes()
但在这两种情况下,我都不知道如何将它们转换回另一侧的 ec public 密钥对象。
全部代码:
# Generating ECDH private/public key
ecdh_private_key = ec.generate_private_key(ec.SECP256R1(), default_backend())
ecdh_public_key = ecdh_private_key.public_key()
# exchange public keys
value = ecdh_public_key.public_numbers()
编辑:
使用 public_bytes()
后得到的值是 PKCS1 密钥。因此,如果有一种方法可以将 PKCS1 密钥转换为 public 密钥对象,它将起作用。
我明白了。
通过像这样导入 load_pem_public_key
方法:
from cryptography.hazmat.primitives.serialization import load_pem_public_key
然后用它从 public 字节创建一个 public 键对象:
public_key = load_pem_public_key(remote_public_bytes, default_backend())
我正在尝试将 public 密钥发送到远程对等点以计算共享密钥。
我使用的是 python 的 cryptography
模块,我使用的是 ec
而不是 rsa
。
我可以发送 public 个号码:
value = ecdh_public_key.public_numbers()
或 public 字节:
value = ecdh_public_key.public_bytes()
但在这两种情况下,我都不知道如何将它们转换回另一侧的 ec public 密钥对象。
全部代码:
# Generating ECDH private/public key
ecdh_private_key = ec.generate_private_key(ec.SECP256R1(), default_backend())
ecdh_public_key = ecdh_private_key.public_key()
# exchange public keys
value = ecdh_public_key.public_numbers()
编辑:
使用 public_bytes()
后得到的值是 PKCS1 密钥。因此,如果有一种方法可以将 PKCS1 密钥转换为 public 密钥对象,它将起作用。
我明白了。
通过像这样导入 load_pem_public_key
方法:
from cryptography.hazmat.primitives.serialization import load_pem_public_key
然后用它从 public 字节创建一个 public 键对象:
public_key = load_pem_public_key(remote_public_bytes, default_backend())