1
일부 데이터를 암호화하려면 DHPublicKey가 필요합니다. 따라서 BigIntegers (y, p, g)로 필요한 모든 매개 변수가 제공되었습니다. 불행히도 DHPublicKey 인터페이스에 맞는 이러한 매개 변수에서 공개 키 개체를 만드는 방법이 없습니다. 아이디어가 있으십니까?y, p, g에서 BigIntegers로 DHPublicKey를 생성해야합니다.
일부 데이터를 암호화하려면 DHPublicKey가 필요합니다. 따라서 BigIntegers (y, p, g)로 필요한 모든 매개 변수가 제공되었습니다. 불행히도 DHPublicKey 인터페이스에 맞는 이러한 매개 변수에서 공개 키 개체를 만드는 방법이 없습니다. 아이디어가 있으십니까?y, p, g에서 BigIntegers로 DHPublicKey를 생성해야합니다.
KeyFactory keyFactory;
KeyPairGenerator kpg;
DHPublicKey originalDhPubKey, fromSpecsDhPubKey;
DHPublicKeySpec dhPubKeySpecs;
KeyPair kp;
BigInteger p, g, y;
// generate a DH key pair
kpg = KeyPairGenerator.getInstance("DH");
kp = kpg.generateKeyPair();
// get the DH public key
originalDhPubKey = (DHPublicKey) kp.getPublic();
// get P, G and Y specs
p = originalDhPubKey.getParams().getP();
g = originalDhPubKey.getParams().getG();
y = originalDhPubKey.getY();
// get a DH KeyFactory
keyFactory = KeyFactory.getInstance("DH");
// create a DHPublicKeySpec with the specs you have
dhPubKeySpecs = new DHPublicKeySpec(y, p, g);
// get the DHPublicKey
fromSpecsDhPubKey = (DHPublicKey) keyFactory.generatePublic(dhPubKeySpecs);
// Check that the DH public values are equal
System.out.println(originalDhPubKey.getY().equals(fromSpecsDhPubKey.getY()));