Source: https://www.di.ens.fr/~nitulesc/files/CRYPTO13/Exam-corrige.pdf