我正在尝试将公共密钥发送给远程对等方,以便计算共享密钥。
我使用的是python的cryptography
模块,而不是ec
。我使用的是rsa
。
我可以发送公共号码:
value = ecdh_public_key.public_numbers()
或公共字节:
value = ecdh_public_key.public_bytes()
但是在两种情况下,我都不知道如何将它们转换回另一端的ec公钥对象。
整个代码:
# 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密钥转换为公钥对象,它将起作用。
答案 0 :(得分:0)
我知道了。
通过导入load_pem_public_key
这样的方法:
from cryptography.hazmat.primitives.serialization import load_pem_public_key
然后使用它从公共字节创建公共密钥对象:
public_key = load_pem_public_key(remote_public_bytes, default_backend())