This program provides the user with a number theory/publick key encryption toolkit. The user might:
- Find whether a number is prime or not
- Get a probably prime number specifing a bit length
- Find de GCD between two numbers
- Find the multiplicative inverse (input: number and modulus)
- Generate an RSA key pair (input: bit lenght)
- Encrypt a message using an RSA (input: message, public key info)
- Decrypt a message encrypted with RSA (input: ciphertext, private key info)
- Find the discrete lograrithm when a generator a prime and a y=g^x values are provided (this function uses the Pohlig Hellman Algorithm)