0

通信のためにセッションキーを交換することから始まる小さなプログラムがあり、そのために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 パラメータを生成する別の方法があるのでしょうか?

4

1 に答える 1

1

キーをより特殊なタイプにキャストするだけです...

DHPublicKey localKey = (DHPublicKey) keyPair1.getPublic();
BigInteger localY = localKey.getY();

もちろん、事前定義されたパラメータに同意していない場合は、 からパラメータを取得することもできますlocalKey

于 2012-10-30T20:50:25.840 に答える