私はドキュメントに署名し、それをネットワーク経由でアプリケーションサーバーに送信する分散デジタル署名を開発しています。私はjavaでソケットプログラミングを使用しています。私は公開鍵をコード化するか圧縮する必要があると思います。つまり、xとyの値は何とか1つのバイナリデータとして表現され、パブリックレジストリやネットワークに保存されます。どのように楕円曲線の公開鍵を圧縮またはエンコードしてネットワーク上に置くのですか?
私は署名の検証は、あなたがuはつもりに持って検証者に、ネットワークを介してそれらを送信するときit.becauseを使用するために、それをデコードするように、公開鍵とドメインパラメータをエンコードする方法を知りたい // 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 Providerを使用していません。 ECDSAアルゴリズムの実装全体が私のプロジェクトです
あなたがメモリ内にそれらを表現するにはどうすればよい?彼らはただ、大きな整数だ、
Security.addProvider(new BouncyCastleProvider())
(あなたのJREに弾む城プロバイダを追加する必要があります。 – CodesInChaosでください、あなたはポイント圧縮を使用したいのですか?これは、x座標とy座標の符号のみをシリアル化して、y座標を復元するためにカーブ方程式を使用するテクニックです。 – CodesInChaos
はい、圧縮に加えて、共有ネットワークレジストリの公開鍵で、2つ以上のアプリケーションサーバが署名を検証するために使用します –