Diffie-Hellman java implementation