suivant: Le programme Xcas
monter: Le codage Jules César
précédent: Les caractères et leurs
Table des matières
Index
Voici les différentes étapes du codage (elles seront programmées avec
Xcas dans le paragraphe suivant) :
- À chaque lettre ou symbole,
on associe un nombre, comme dans la table 7.6.1. Un texte devient ainsi
une suite de nombres : par exemple ê sera codée par 95 et
BONJOUR par 34 47 46 42 47 53 50.
La fonction codec2n réalise cette étape : elle transforme un
caractère en un nombre n (
0
n < 101), selon la table 7.6.1.
- On effectue une ou plusieurs opérations sur ces nombres :
- pour le codage de Jules César, on ajoute à ces nombres un nombre
fixé appelé clef de chiffrement (par exemple 17), puis on prend le
reste de la division par 101 des nombres obtenus.
Ainsi avec ce codage, ê est transformé 95
qui est transformé en 11 (95+17=112 =101+11, ou encore, 11 est le reste
de la division de 112 par 101).
Avec Xcas, on effectue la transformation de n avec la commande
irem(n+clef,101), où clef est une variable qui contient la clef
de chiffrement.
- pour le codage linéaire on multiplie ces nombres par un nombre
fixé appelé clef de chiffrement (par exemple 17) puis on prend le reste de la division par 101 des nombres obtenus.
Ainsi avec ce codage ê est transformé 95 qui est
transformé en 100 (95*17=1615 =15*101+100, ou encore, 100 est le reste de la
division de 1615 par 101).
Avec Xcas, on effectue la transformation de n avec la commande :
irem(n*clef,101)
si clef est une variable qui contient la clef de chiffrement.
- On transforme ensuite cette suite de nombre en une suite de caractères,
c'est le message crypté.
Ainsi, avec le codage de Jules César de clef 17, ê devient
+ et BONJOUR devient
S`_|`fc et
avec le codage linéaire de clef 17, ê devient
é et BONJOUR devient
i|k'|}J.
La fonction coden2c réalise cette étape : elle transforme un nombre
n (
0
n < 101) en un caractère c, selon la table 7.6.1.
- Le décryptage nécessite d'inverser les opérations 3, 2 et 1.
Dans les exemples :
- avec le codage de Jules César, il faut enlever 17 ou rajouter 84
et prendre le reste de la division par 101,
(84 est la clef de déchiffrement car 84+17=101). Ainsi, 11 est décripté par
95 puisque 11+84=95.
- avec le codage linéaire, il faut multiplier par 6 et prendre
le reste de la division par 101, (6 est la clef de déchiffrement car
6*17=102=101+1). Ainsi, 100 est décripté par 95 puisque 100*6=5*101+95.
Le calcul de la
clef de déchiffrement à partir de la clef de chiffrement
fait intervenir l'arithmétique des entiers :
- savoir trouver l'opposé u d'un élément n de Z/101Z pour le
codage de Jules César (u = 101 - n car u + n = 101).
- savoir utiliser l'identité de Bézout pour trouver l'inverse u
d'un élément de n de Z/101Z pour le codage linéaire (on a
u =
car
u*n + v*101 = 1).
suivant: Le programme Xcas
monter: Le codage Jules César
précédent: Les caractères et leurs
Table des matières
Index
Documentation de giac écrite par Renée De Graeve