# DLP

**Cryptography, DLP***158 points*- You should solve a DLP challenge, but how? Of course , you don't expect us to give you a regular and boring DLP problem!
`nc 146.185.143.84 28416`

Let's look at the function they used to encrypt this:

```
def encrypt(nbit, msg):
msg = bytes_to_long(msg)
p = getPrime(nbit)
q = getPrime(nbit)
n = p*q
s = getPrime(4)
enc = pow(n+1, msg, n**(s+1))
return n, enc
```

The DLP we need to solve is then

*s* is a 4 bit prime, so its either 11 or 13

If we look at the public key, we see that n is 1024 bits long, and essentially can't really be factored efficiently, so that rules out the Pohlig Hellman attack.

However, theres a trick we can do to simplify this! Recall the binomial expansion:

Also look at Pascal's Triangle if you need to jog your memory of this :)

So in our case we have:

Any equation that is true mod x, is also true mod any factor of x! n is obviously a factor of our modulus. Therefore and If we rearrange the latter, we get

If we do that, we get: `ASIS{Congratz_You_are_Discrete_Logarithm_Problem_Solver!!!}`

*Disclaimer: I did not solve this during the CTF, but it was an awesome challenge, so I made a writeup anyway*