Как восстановить ключ E C publi c из publi c байтов или publi c чисел в python (модуль криптографии) - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь отправить ключ publi c на удаленный узел, чтобы вычислить общий ключ. Я использую python модуль cryptography, и я использую ec, а не rsa.

Я могу отправить через публичные c номера:

value = ecdh_public_key.public_numbers()

или publi c bytes:

value = ecdh_public_key.public_bytes()

, но в обоих случаях я не знаю, как преобразовать их обратно в ключевой объект e c publi c на другой стороне .

Весь код:

# 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 в объект ключа publi c, он будет работать.

1 Ответ

0 голосов
/ 23 марта 2020

Я понял это. Импортируя метод load_pem_public_key следующим образом:

from cryptography.hazmat.primitives.serialization import load_pem_public_key

, а затем используйте его для создания ключевого объекта publi c из publi c байтов:

public_key = load_pem_public_key(remote_public_bytes, default_backend())
...