next up previous contents index
suivant: Traduction Algorithmique monter: Chiffrement affine : deuxième précédent: Chiffrement affine : deuxième   Table des matières   Index

L'algorithme

On peut aussi choisir de coder le message en le découpant par paquets de 3 lettres que l'on appelle mot et en rajoutant, éventuellement, des espaces à la fin du message pour que le nombre de caractères du message soit un multiple de 3.
Comme précédemment, à chaque caractère on fait correspondre un nombre entier de l'intervalle [0..95].
On considére alors un mot de 3 lettres comme l'écriture dans la base 96 d'un nombre entier n :
Exemple
le mot BAL est la représentation de n = 34×962 +33×96 + 44 = 316556.
En effet B est codé par 34 puisque son code ASCII est 66 (66-32=34), A est codé par 33 et L est codé par 44.
On code les mots de 3 lettres par un autre mot, puis on en déduit le codage du message tout entier. Le programme mot2n transforme un mot m de 3 lettres en un nombre entier n dont l'écriture en base 96 est m. On a donc, si m a 3 lettres n < 963.
Par exemple mot2n("BAL")=316559.

Le progamme codaff transforme n selon le chiffrement affine :
f (n) = a×n + b  mod p.
- il faut choisir p $ \geq$ 963 ; si p > 963, le nombre (f (n)) obtenu aprés transformation affine de n, peut avoir une représentation de plus de 3 lettres dans la base 96. Mais, au décodage tous les mots auront exactement 3 lettres. Pour les calculateurs qui limitent la représentation d'un entier à 12 chiffres il faut choisir p $ \leq$ 106 pour que a×n + b < 1012
- pour que f soit inversible il faut que a et p soient premiers entre eux (cf p [*]) .

Exemple
a = 567 b = 2 p = 106

On obtient par Bézout :

567×664903 + 106×377 = 1

et -2×664903 = 670164  mod 106

donc a1 = 664903 et b1 = 670164

Le programme n2mot fait l'opération inverse et transforme un nombre entier n en un mot m (d'au moins 3 symboles) qui est la représentation de n dans la base 96.
Il faut faire attention aux espaces en début de mot!!! En effet, l'espace est codé par 0 et il risque de disparaître si on ne fait pas attention, au décodage!!!
Exemple
On a $ \tt n2mot(34)=''  B''$ (c'est à dire la chaîne formée par 2 espaces et B).
Le programme codmot3 code les mots d'au moins 3 lettres en un mot d'au moins 3 lettres à l'aide du chiffrement affine. En changeant les paramètres a et b codmot3 décode les mots codés avec codmot3.

Le programme codmess3 code les messages à l'aide du chiffrement affine. Pour décoder, il suffit d'utiliser la fonction codmess3 en changeant les paramètres a et b.


next up previous contents index
suivant: Traduction Algorithmique monter: Chiffrement affine : deuxième précédent: Chiffrement affine : deuxième   Table des matières   Index
Documentation de giac écrite par Renée De Graeve