Goal
ElGamal encryption is a public-key cryptosystem. It uses asymmetric key encryption for a safe communication between two people.
Let us assume that Alice wants to communicate with Bob. Alice generates three large random integers:
- Q a prime used as the order of the key
- 0 < G < Q a generator
- X Alice's secret key
Alice computes H = G^X mod Q and publicly shares with Bob the public key (G, H, Q). As an attacker, you intercept this key and decide to spy on their communications. To do so, you need to find Alice's secret key X. This can be done by performing a discrete logarithm attack on this key.
Given the public key (G, H, Q), you are asked to perform this attack: find the lowest integer X such that G^X mod Q = H.
The rest of this protocol is not explained to avoid overload but it can be found on https://en.wikipedia.org/wiki/ElGamal_encryption
Input
Line 1: The public key (G, H, Q)
Output
Line 1: Alice's private key X.
Constraints
1 < G, H < Q
1 < X < Q-1.
0 < Q < 50.000.000.000