通信のためにセッションキーを交換することから始まる小さなプログラムがあり、そのためにdiffie-hellmannプロトコルを使用します。Java では、最初の部分は次のように行われます。
KeyPairGenerator keyPairGenerator1 = KeyPairGenerator.getInstance("DH");
keyPairGenerator1.initialize(Skip.sDHParameterSpec);
KeyPair keyPair1 = keyPairGenerator1.generateKeyPair();
byte[] localKey1 = keyPair1.getPublic().getEncoded();
KeyAgreement keyAgreement1 = KeyAgreement.getInstance("DH");
keyAgreement1.init(keyPair1.getPrivate());
// getting remote key
keyAgreement1.doPhase(theirPublicKey2, true);
byte[] sharedKey1 = keyAgreement1.generateSecret();
次に、localKey がリモート パーツに送信され、リモート パーツが計算用のデータの一部を DH 共有キーに送り返します。問題、別のプログラムが行データ (big integer) を取得することを期待しており、Java プログラムから X509 エンコードを送信しました。
では、PublicKey から BigInteger (DH プロトコルのローカル Y 値) を取得するにはどうすればよいでしょうか? または、必要な DH パラメータを生成する別の方法があるのでしょうか?