Rating:

# Aero CTF 2020 : Magic I

**category** : crypto

**points** : 205

## write-up

XOR encryption

`key` is the sum of one column of a [magic square](https://en.wikipedia.org/wiki/Magic_square) of unknown dimension.

We are given the value of `key % x^2`, where `x` is the dimension.

After some computation, we got `key = x^2 * (x^2 - 1) / (2x) = (x^3 - x) / 2`

Assume `x` is even, and `x = 2y`, then `key = 4y^3 - y`, and `key % x^2 = key % 4y^2 = 4y^2 - y`.

Plug in the value and find out that there is no integer solution.

Assume `x` is odd, and `x = 2y + 1`, then `key = 4y^3 + 6y^2 + 2y`, and `key % x^2 = 2y^2 + y`.

Then use [Wolfram](https://www.wolframalpha.com/input/?i=2y%5E2+%2B+y+%3D+5405053190768240950975482839552589374748349681382030872360550121041249100085609471) to find the answer, which is `y = 51985830717457237488973954964904090788909` and then we can decrypt the flag.

# other write-ups and resources

Original writeup (https://github.com/OAlienO/CTF/tree/master/2020/Aero-CTF/Magic-I).