lots of exercises in java... from https://github.com/exercism/java

DiffieHellman.java 709B

12345678910111213141516171819202122232425
  1. import java.math.BigInteger;
  2. import java.util.Random;
  3. class DiffieHellman {
  4. private Random random = new Random();
  5. BigInteger privateKey(BigInteger primeP) {
  6. BigInteger privateKey;
  7. do {
  8. privateKey = new BigInteger(primeP.bitLength(), random);
  9. } while (privateKey.compareTo(BigInteger.ZERO) == 0 || privateKey.compareTo(primeP) >= 0);
  10. return privateKey;
  11. }
  12. BigInteger publicKey(BigInteger primeP, BigInteger primeG, BigInteger privateKey) {
  13. return primeG.modPow(privateKey, primeP);
  14. }
  15. BigInteger secret(BigInteger primeP, BigInteger publicKey, BigInteger privateKey) {
  16. return publicKey.modPow(privateKey, primeP);
  17. }
  18. }