Code Mupad cryptage affine

Le code est divisé en morceaux représentant chacun une étape

Les textes en rouge sont du code MuPad et doivent être inscrits dans des paragraphes de calcul (Insert Calaulation, raccourci : cmd-I pour Mac ou CTRL-I sur PC).
Les textes en noir sont à inscire dans des paragraphes textes entre deux

Après chaque morceau de code, insérer un paragraphe calcul pour tester les fonctions définues sur un exemple

Il vaut toujours mieux fractionner le code en petits morceaux qu'on puisse tester séparément!!

Fonctions utiles

Notes sur les fonctions internes de Mupad utilisées

Convertir un texte en une suite de nombres et vice-versa

texte2chiffres := xtexte->map(numlib::toAscii(xtexte),x->x-65);
chiffres2texte := x->numlib::fromAscii(map(x,y->y+65));
// la fonction de déchiffrement prend un texte et une fonction en arguments
ee := (xtexte,e)->chiffres2texte(map(texte2chiffres(xtexte),e)):
affine := (a,b,x)->(a*x+b mod 26):

Test des fonctions

chiffres := texte2chiffres("ABCDZ");
chiffres2texte(chiffres);
ee("ABCXYZ",x->25-x);

Exemple : coder «MONTAGNE»

e := x->_mod(x+12,26):
texte := "MONTAGNE";
ee(texte,e);

Calculer les inverses modulo 26

for i from 1 to 25 step 2 do
if(i<>13) then
print(i, powermod(i,-1,26));
end_if
end_for