
Untitled
By: a guest on
May 5th, 2012 | syntax:
None | size: 1.24 KB | hits: 11 | expires: Never
How to combine a private key and a public key for a shared secret in Java
combine_keys(key_pari_alice.private, key_pair_bob.public) ==
combine_keys(key_pari_alice.public, key_pair_bob.private)
public static void main(String[] args) {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");
AlgorithmParameterGenerator paramGen = AlgorithmParameterGenerator
.getInstance("DH");
paramGen.init(1024);
// Generate the parameters
AlgorithmParameters params = paramGen.generateParameters();
DHParameterSpec dhSpec = (DHParameterSpec) params
.getParameterSpec(DHParameterSpec.class);
keyGen.initialize(dhSpec);
KeyPair alice_key = keyGen.generateKeyPair();
KeyPair bob_key = keyGen.generateKeyPair();
SecretKey secret_alice = combine(alice_key.getPrivate(),
bob_key.getPublic());
SecretKey secret_bob = combine(bob_key.getPrivate(),
alice_key.getPublic());
System.out.println(Arrays.toString(secret_alice.getEncoded()));
System.out.println(Arrays.toString(secret_bob.getEncoded()));
}
private static SecretKey combine(PrivateKey private1,
PublicKey public1) {
KeyAgreement ka = KeyAgreement.getInstance("DH");
ka.init(private1);
ka.doPhase(public1, true);
SecretKey secretKey = ka.generateSecret("DES");
return secretKey;
}