Diffie-Hellman-Schlüsselaustausch in Java

Ich arbeite an einem persönlichen Projekt in Java, bei dem vertrauliche Daten über einen unsicheren Kanal gesendet werden. Ich muss wissen, wie man Diffie Hellman Key Exchange (DHKE) in Java mithilfe seiner Bibliotheken implementiert. Ich kenne die gesamte kryptografische Theorie, so dass ich nicht ins Detail gehen muss, sondern nur eine sehr einfache Implementierung brauche, damit ich 2 Programme habe, die einen geheimen Schlüssel gemeinsam haben. Ich habe das Beispiel von java2s.com erhalten, aber es ist nicht vollständig:

import java.math.BigInteger;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.SecureRandom;

import javax.crypto.spec.DHParameterSpec;
import javax.crypto.spec.DHPublicKeySpec;

public class Main {
  public final static int pValue = 47;

  public final static int gValue = 71;

  public final static int XaValue = 9;

  public final static int XbValue = 14;

  public static void main(String[] args) throws Exception {
    BigInteger p = new BigInteger(Integer.toString(pValue));
    BigInteger g = new BigInteger(Integer.toString(gValue));
    BigInteger Xa = new BigInteger(Integer.toString(XaValue));
    BigInteger Xb = new BigInteger(Integer.toString(XbValue));

    int bitLength = 512; // 512 bits
    SecureRandom rnd = new SecureRandom();
    p = BigInteger.probablePrime(bitLength, rnd);
    g = BigInteger.probablePrime(bitLength, rnd);

    createSpecificKey(p, g);
  }

  public static void createSpecificKey(BigInteger p, BigInteger g) throws Exception {
    KeyPairGenerator kpg = KeyPairGenerator.getInstance("DiffieHellman");

    DHParameterSpec param = new DHParameterSpec(p, g);
    kpg.initialize(param);
    KeyPair kp = kpg.generateKeyPair();

    KeyFactory kfactory = KeyFactory.getInstance("DiffieHellman");

    DHPublicKeySpec kspec = (DHPublicKeySpec) kfactory.getKeySpec(kp.getPublic(),
        DHPublicKeySpec.class);
  }
}

Wie gehe ich davon aus? Kann mir jemand helfen, den verbleibenden Code zu vervollständigen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage