Dans le répertoire javascript créez un dossier cours10. Il contiendra tous les fichiers de cette
leçon.
Sur l'éditeur Brackets allez dans Fichier, ouvrez un dossier et sélestionner le dossier cours10.
Le nom du dossier s'affiche à gauche.
A l'aide d'un clic droit de la souris sur le nom du dossier,
créez un dossier js puis un dossier html.
Pour coder un message, on procède de la manière suivante : à chacune des 26 lettres de l'alphabet, on commence par lui associer un entier $n$ de l'ensemble
$\Omega = \{0~;~ 1~;~2~;~\ldots~;~24~;~ 25\}$ selon le tableau ci-dessous :
$$\begin{array}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}\hline
A &B &C &D &E &F &G &H & I&J &K &L &M&N &O &P &Q &R &S &T &U &V &W &X &Y &Z\\ \hline
0 &1 &2 &3 &4 &5 &6 &7 &8 &9 &10 &11 &12&13 &14 &15 &16 &17 &18 &19 &20 &21 &22 &23 &24 &25\\ \hline\hline
\end{array}$$
Le texte s'obtient en remplaçant chaque lettre du texte clair original par une lettre à distance fixe, toujours du même côté, dans l'ordre de l'alphabet.
Pour les dernières lettres (dans le cas d'un décalage à droite), on reprend au début.
La distance fixe est la clé du codage, elle est donnée par deux lettres.
Si la clé est CH, la distance entre C et H est 5.
Avec un décalage de 5 vers la droite, A est remplacé par F, B devient G, et ainsi jusqu'à X devient C, puis Y devient D etc.
Il s'agit d'une permutation circulaire de l'alphabet.
La longueur du décalage, 5 dans l'exemple évoqué, constitue la clé du chiffrement qu'il suffit de transmettre au destinataire
— s'il sait déjà qu'il s'agit d'un chiffrement de César — pour que celui-ci puisse déchiffrer le message.
Dans le cas de l'alphabet latin, le chiffre de César n'a que 26 clés possibles (y compris la clé nulle, qui ne modifie pas le texte).\\
Pour simplifier, les messages à coder utiliseront seulement les lettres du tableau. Autrement dit, il n'y a pas de ponctuation, pas d'accents , etc.
Exemple : On veut coder la phrase " Je suis en BTS SIO" avec la clé CH
On utilisera :
Votre script fera appel à quatre fonctions :
Pour coder un message, on procède comme précédemment : à chacune des 26 lettres de l'alphabet, on commence par lui associer un entier $n$ de l'ensemble
$\Omega = \{0~;~ 1~;~2~;~\ldots~;~24~;~ 25\}$.
Puis on associe à tout entier $n$ de $\Omega$ le reste de la division euclidienne de $(3n + 5)$ par 26 ; ce reste est alors associé à la lettre correspondante.
On admet que tous ces restes allant de 0 à 25 sont distincts.
Exemple : pour coder la lettre P on procède de la manière suivante :
Ainsi la lettre P est codée par la lettre Y. Les étapes 2 et 3 sont appelées codage affine.
Pour le décodage on procède de la même manière en associant à tout entier $n$ de $\Omega$ le reste de la division euclidienne de $(9n + 7)$ par 26 ; ce reste est alors associé à la lettre correspondante.
Un système de cryptographie, difficile à briser, fut inventé au XVIe siècle par le français Vigenère.
Il consistait à écrire 25 alphabets
décalés par rapport à l’alphabet normal :
l’alphabet qui commence par B et finit par …YZA,
l’alphabet qui commence par C et finit par …ZAB ... etc.
Le codage va s’effectuer sur le principe du chiffre de César : on remplace la lettre d’origine par la lettre occupant la même place dans l’alphabet décalé.
Mais à la différence du chiffre de César, un même message va utiliser non un, mais plusieurs alphabets décalés.
Pour savoir
quels alphabets doivent être utilisés, et dans quel ordre, on utilise une clé.
Si cette clé est VIGENERE et le message " Il faut coder cette phrase, on procédera comme suit :
$$\begin{array}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}\hline
A &B &C &D &E &F &G &H & I&J &K &L &M&N &O &P &Q &R &S &T &U &V &W &X &Y &Z\\ \hline
0 &1 &2 &3 &4 &5 &6 &7 &8 &9 &10 &11 &12&13 &14 &15 &16 &17 &18 &19 &20 &21 &22 &23 &24 &25\\ \hline\hline
\end{array}$$
Vous pouvez tester vos codages ici : Chiffre de Vigenère
Exemple :
$$\begin{array}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}\hline
\hline
Lettre1&I&L&F&A&U&T&C&O&D&E&R&C&E&T&T&E&P&H&R&A&S&E\\
\hline
Rang1&8&11&5&0&20&19&2&14&3&4&17&2&4&19&19&4&15&7&17&0&18&4\\
\hline
Clé&V&I&G&E&N&E&R&E&V&I&G&E&N&E&R&E&V&I&G&E&N&E\\
\hline
Rang&21&8&6&4&13&4&17&4&21&8&6&4&13&4&17&4&21&8&6&4&13&4\\
\hline
Rang2&3&19&11&4&7&23&19&18&24&12&23&6&17&23&10&8&10&15&23&4&5&8\\
\hline
Lettre2&D&T&L&E&H&X&T&S&Y&M&X&G&R&X&K&I&K&P&X&E&F&I\\
\hline
\end{array}$$
Dans le cas d'un nombre impair de lettres, la drenière lettre n'est pas codée.
Pour la procédure de décodage on reprend les trois étapes précédentes mais en utilisant un nouveau calcul