Как я могу отправить открытый ключ, сгенерированный с помощью криптографии с эллиптической кривой, в байтовом массиве, учитывая, что это тип класса?

#python #class #cryptography #elliptic-curve #diffie-hellman

#python #класс #криптография #эллиптическая кривая #диффи-Хеллман

Вопрос:

Я использую криптографическую библиотеку python для генерации пары ключей с использованием эллиптической кривой (ECDHE), чтобы позже выполнить обмен ключами Диффи-Хеллмана с устройством.

Я заметил, что public_key, который я получаю, имеет тип class , а точнее, класс EllipticCurvePublicKey .

Я не могу распечатать его на терминале, и когда я это делаю, он, очевидно, печатает его адрес. Но мне нужно, чтобы он был отправлен через буфер на USB-устройство, так как я могу его использовать?

Скопируйте приведенный ниже код для справки:

Генерация ключей:

 private_key = ec.generate_private_key(ec.SECP256R1())
public_key = private_key.public_key()
  

Класс и метод в библиотеке криптографии:

 @six.add_metaclass(abc.ABCMeta)
class EllipticCurvePrivateKey(object):
    @abc.abstractmethod
    def signer(self, signature_algorithm):

    @abc.abstractmethod
    def exchange(self, algorithm, peer_public_key):

    @abc.abstractmethod
    def public_key(self):

    """
    The EllipticCurvePublicKey for this private key.
    """
    
  

Комментарии:

1. Чтобы взять ключевой объект и преобразовать его в байты, используйте это . Чтобы пойти другим путем, от байтов к объекту открытого ключа, используйте модуль сериализации .

2. Спасибо! Я обнаружил, что мне нужно преобразовать его в байты, как вы сказали, и далее декодировать его (из pem в der в открытый ключ).