Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 5th, 2012  |  syntax: None  |  size: 1.24 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. How to combine a private key and a public key for a shared secret in Java
  2. combine_keys(key_pari_alice.private, key_pair_bob.public) ==
  3.     combine_keys(key_pari_alice.public, key_pair_bob.private)
  4.        
  5. public static void main(String[] args) {
  6. KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");
  7. AlgorithmParameterGenerator paramGen = AlgorithmParameterGenerator
  8.     .getInstance("DH");
  9. paramGen.init(1024);
  10.  
  11. // Generate the parameters
  12. AlgorithmParameters params = paramGen.generateParameters();
  13. DHParameterSpec dhSpec = (DHParameterSpec) params
  14.     .getParameterSpec(DHParameterSpec.class);
  15.  
  16. keyGen.initialize(dhSpec);
  17.  
  18. KeyPair alice_key = keyGen.generateKeyPair();
  19. KeyPair bob_key = keyGen.generateKeyPair();
  20.  
  21. SecretKey secret_alice = combine(alice_key.getPrivate(),
  22.     bob_key.getPublic());
  23.  
  24. SecretKey secret_bob = combine(bob_key.getPrivate(),
  25.     alice_key.getPublic());
  26.  
  27. System.out.println(Arrays.toString(secret_alice.getEncoded()));
  28. System.out.println(Arrays.toString(secret_bob.getEncoded()));
  29. }
  30.  
  31. private static SecretKey combine(PrivateKey private1,
  32.     PublicKey public1)  {
  33. KeyAgreement ka = KeyAgreement.getInstance("DH");
  34. ka.init(private1);
  35. ka.doPhase(public1, true);
  36. SecretKey secretKey = ka.generateSecret("DES");
  37. return secretKey;
  38. }