next up previous contents index
suivant: Le code Ascii monter: Codage précédent: Traduction Xcas   Table des matières   Index


Devoir à la maison

On écrit un message plus ou moins long selon le nombre d'élèves de la classe. Puis on le partage en groupement de 8 lettres.
Chaque groupe de 8 lettres est ensuite codé (lettre par lettre) à l'aide d'un chiffrement affine de paramètres diffèrents selon les élèves.

Le chiffrement affine lettre à lettre est déterminé par la donnée de 3 paramètres :
a, b, p qui transforme l'entier n en m = a*n + b ( mod p).
Pour avoir une fonction de décodage il faut et il suffit que a soit inversible dans Z/pZ c'est à dire que a et p soient premiers entre eux.
La fonction de décodage est alors :
a1*m + b1 avec,
a1 inverse de a dans Z/pZ ( a1 = u ( mod p) si a*u + p*v = 1 (identité de Bézout)) et b1 = - b*a1 ( mod p).

Pour ce chiffrement affine, on peut utiliser tous les caractères dont les codes ASCII vont de 32 à 127 (les caractères de code 0 à 31 ne sont pas imprimables et au delà de 127 ils ne sont pas standards).

Étant donnés abp = 96, comment coder ?
À chaque caractère (de code ASCII compris entre 32 et 127) on fait correspondre un entier n entre 0 et 95 ; n est égal à : (code ASCII du caractère) - 32.
Par exemple, à B on fait correspondre 34 (66-32 ).
Puis, on calcule m = a*n + b  mod 96 :
pour a = 55, b = 79 et n = 34 on obtient m = 29.
Puis, on cherche le caractère de code ASCII m + 32. Le caractère qui a comme code ASCII 29+32=61 est le signe =) : c'est ce caractère qui sera donc choisi comme codage de la lettre B.
Exemple :
On va coder la phrase :
BEAUCOUP DE TRAVAIL POUR RIEN!?
en la coupant en trois morceaux (le caractère espace termine les deux premiers morceaux).
Par exemple :
BEAUCOUP sera codé avec a = 55 b = 79 et p = 96
DE TRAVAIL sera codé avec a = 49 b = 25 et p = 96
POUR RIEN!? sera codé avec a = 73 b = 48 et p = 96
On code BEAUCOUP avec a = 55 b = 79 et p = 96.
On obtient :
="f2th2?o
Le devoir du premier élève est donc :
avec les paramètres de codage a = 55 b = 79 et p = 96, décoder ="f2th2?o
L'élève doit :
- trouver les paramètres de décodage (ici a1 = 7 b1 = 23) :
en effet l'inverse a1 de a ( mod 96) est obtenu en ecrivant l'identité de Bézout pour a et p :
55*7 - 96*4 = 1 et b1 = 79*7 ( mod 96) = 23
- puis décoder à l'aide d'une table de code ASCII :
le code ASCII du caractère = est 61 donc :
m = 61 - 32 = 29
a1*n + b1 ( mod 96) = 7*29 + 23 ( mod 96) = 226 ( mod 96) = 34
La lettre de code 34+32 = 66 est B


Sous-sections
next up previous contents index
suivant: Le code Ascii monter: Codage précédent: Traduction Xcas   Table des matières   Index
Documentation de giac écrite par Renée De Graeve