suivant: Traduction Algorithmique
monter: Chiffrement affine : premier
précédent: Chiffrement affine : premier
Table des matières
Index
L'algorithme
Pour écrire le message on ne se restreint plus aux 26 lettres de l'alphabet.
On suppose que le message à coder n'utilise que les caractères dont le code
ASCII va de 32 à 127 (avant 32, les caractères ne sont pas imprimables, et
après 127 il s'agit de caractères spéciaux...).
On choisit dans ce premier algorithme de coder chaque lettre : cela à
l'incovénient de décrypter facilement le message en analysant la
fréquence des lettres du message crypté, c'est pourquoi dans le deuxième
algorithme, on code des groupements de trois lettres.
Il y a alors trois choses à faire qui sont les trois instructions de la
fonction cod1 et qui code un caractère par un autre caractère :
- on transforme chaque caractère en un entier n de 0 à 95 (en enlevant 32
à son code ASCII)
- puis, on applique à cet entier n le chiffrement affine :
f (n) = a×n + b ( mod 96) avec
f (n)
[0..95].
Pour que cette application soit bijective il faut et il suffit que a soit
premier avec 96. En effet d'après l'identité de Bézout il
existe u et v tels que :
a×u + 96×v = 1 donc
a×u = 1 ( mod 96)).
On a donc
f-1(m) = u.(m - b) ( mod 96)
- on transforme le nombre trouvé f (n) en un caractère de code f (n) + 32.
Pour coder le message, il suffit ensuite de coder chaque caractère,
c'est ce que fait la fonction codm1.
Pour décoder, il suffit de remplacer la valeur de a par
a1 = u ( mod 96) si
a×u + 96×v = 1
et la valeur de b par
b1 = - a1×b ( mod 96)
car alors on a
n = a1×f (n) + b1 ( mod 96)
Les fonctions de décodage et de codage sont donc les mêmes , seuls les
paramètres sont différents!
Exemple
a = 85 b = 2
On a par l'identité de Bézout :
85×61 - 96×54 = 1
et
-2×61 = - 122 = 70 ( mod 96)
donc on obtient :
a1 = 61 b1 = 70
suivant: Traduction Algorithmique
monter: Chiffrement affine : premier
précédent: Chiffrement affine : premier
Table des matières
Index
Documentation de giac écrite par Renée De Graeve