\exercice[style=R,N=4]{Programmation Python d'un chiffrement affine}

Comme nous l'avons vu dans l'exercice précédent, un chiffrement affine sur la base de notre alphabet est de la forme :
\[ y\equiv ax+b \mod 26. \]
Programmer en Python :
\begin{itemize}
\item une fonction \texttt{pgcd(a,b)} donnant le PGCD de deux nombres entiers $a$ et $b$;
\item une fonction \texttt{chiffrementAffine(a,b,L)} chiffrant une lettre selon le chiffrement $ax+b$, où $\pgcd{a}{26}=1$ (dans laquelle la fonction \texttt{pgcd} pourra être appelée);
\item une fonction \texttt{inverse(a)} calculant l'inverse de $a$ modulo 26;
\item une fonction \texttt{dechiffrementAffine(a,b,L)} déchiffrant une lettre chiffrée avec un chiffrement affine $ax+b$, où $\pgcd{a}{26}=1$;
\item deux fonctions \texttt{crypt(M,a,b)} et \texttt{decrypt(M,a,b)} affichant respectivement le chiffrement et le déchiffrement d'un mot \texttt{M} à l'aide d'un chiffrement affine $ax+b$.
\end{itemize}

Crypter alors le mot \og MATHS \fg{} avec le chiffrement affine $15x+8\mod26$ et déchiffrer le mot \og MIMVC \fg{} obtenu avec le chiffrement $5x+8\mod26$.