\documentclass[10pt,a4paper]{article} \usepackage{/media/documents/Cours/Prof/TD_maple/2012_2013/style} \title{Chiffrement et encodage} \author{} \date{} \begin{document} \maketitle \thispagestyle{fancy} Ce TD est inspiré de l'épreuve 2008 d'informatique du concours de l'X en MP option SI. Le but de ce TD sera de crypter un message en utilisant deux types de codages ``simple'': Codage César et Codage Vigenère. \section{Chiffrer un message} Avant de crypter le message il faut le rendre manipulable par l'outil informatique. Un message \texttt{M} (une liste de lettres - on oubliera les espaces et les signes de ponctuations) doit donc être tranformé en une liste de nombres \texttt{L} ($a \leftrightarrow 1$, $b \leftrightarrow 2$..). Exemple sur \texttt{jaimelesmahts}: \begin{center} \begin{tabular}{c|ccccccccccccc} liste \texttt{M} & j & a & i & m & e & l & e & s & m & a & t & h & s \\ \hline liste \texttt{L} & 10 & 1 & 9 & 13 & 5 & 12 & 5 & 19 & 13 & 1 & 20 & 8 & 19 \end{tabular} \end{center} \begin{itemize} \item Écrire une procédure \texttt{Chiffre} qui chiffre un message. \item Écrire une procédure \texttt{Dechiffre} qui déchriffre un message. \end{itemize} \section{Codage de César} Le codage César consiste à décaler l'alphabet d'un nombre donnée \texttt{d}, la clé. Ainsi pour \texttt{d} $=1$, \texttt{jaimelesmaths} devient \texttt{kbjnfmftnbxgt}. \begin{itemize} \item Écrire une procédure \texttt{CodeCesar} prenant en argument \texttt{M} le message et \texttt{d} la clé et renvoyant \texttt{M'} le message codé. \item Écrire une procédure \texttt{DeCodeCesarCle} prenant en argument \texttt{M'} le message codé et \texttt{d} la clé et renvoyant \texttt{M'} le message. \end{itemize} \section{Casser le codage César} Pour casser le codage César, il faut découvrir \texttt{d}, la clé. On pourrai essayer tous les décalages possibles et voir lequel donne un texte cohérent mais ce serai pénible. Une autre solution consiste à calculer la fréquence d'apparition de chaque lettre. En effet, l'étude de la langue français indique que sur des textes suffisamment long, la lettre la plus courante est le \texttt{e}. Ainsi si notre message est suffisamment long, la lettre la plus fréquente correspondra à \texttt{e} et on pourra calculer le décalage. \begin{itemize} \item Écrire une procédure \texttt{Frequence} qui prend en argument le message \texttt{M} et qui renvoie la lettre la plus fréquence. \item Écrire une procédure \texttt{DecodeCesarAuto} qui prend en argument le message \texttt{M'} et qui renvoie le message décrypté \texttt{M}. \end{itemize} \section{Codage de Vigenère} Au XVIe siècle, Blaise de Vigenère a modernisé le codage César. Au lieu de décaler toutes les lettres du texte de la même manière, on les décale en fonction d'une clé. Prenons la clé \texttt{nimajneb}. Ainsi on codera la première lettre en utilisant le décalage qui envoie \texttt{a} sur \texttt{n} (c'est à dire de 13), la deuxième lettre du décalage qui envoie \texttt{a} sur \texttt{i} et ainsi de suite. Quand on arrive à la fin de la clé, on recommence par le début. \begin{itemize} \item Écrire une procédure \texttt{Vigenère} qui prend en argument le message et la clé et qui renvoie le message crypté. \item Écrire une procédure \texttt{DecVigene} qui décode un message crypté en connaissant la clé. \end{itemize} Pour casser le codage de Vigenère, vous pouvez regarder la fin de l'épreuve de l'X. \end{document}