Как сжать или закодировать открытый ключ эллиптической кривой и передать его по сети?

Я разрабатываю распределенную цифровую подпись, которая подписывает документ и отправляет его по сети на сервер приложений. Для этого я использую программирование сокетов в java. Я думаю, что открытый ключ должен быть закодирован или сжат, т.е. значения x и y каким-то образом представлены в виде отдельных двоичных данных и сохранены в общедоступном реестре или сети. Но я не знаю, как это сделать в java.

        // I have class like this 
           public class CryptoSystem{                  

               EllipticCurve ec = new EllipticCurve(new P192());

               //-------------------
               //--------------------

               public ECKeyPair generatekeyPair()
               {
                  return ECKeyPair(ec);

               }


            }    
        // i don't think i have problem in the above


    CryptoSystem crypto = new CryptoSystem();
    ECKeyPair keyPair = crypto.generateKeyPair();
    BigInteger prvKey = keyPair.getPrivateKey();
    ECPoint pubKey = keyPair.getPublicKey();
     // recommend me here to  compress and send it  the public key to a shared network.

Я хочу знать, как кодировать открытый ключ и параметры домена, чтобы верификатор подписи расшифровал их для использования. Потому что, когда вы отправляете их по сети верификатору, вам придется кодировать их как однобайтовый массив. Я не использую провайдера Bouncy Castle. Вся реализация алгоритма ECDSA — это мой проект

8
задан Clickmit Wg 9 June 2012 в 11:58
поделиться