suivant: Troisième étape : le
monter: La fonction de codage
précédent: Première étape
Table des matières
Index
Le petit théorème de Fermat dit que :
si n est premier et si a est premier avec n alors
an-1 = 1 mod n.
Une généralisation (simple) du petit théorème de Fermat est :
si p et q sont premiers, si a est quelconque, si n = p*q et si k est
un entier, alors :
ak(p-1)*(q-1)+1 = a mod p*q.
Montrons cette généralisation simple :
- si a est un multiple de n c'est évident puisque
a = 0 mod n donc
ak(p-1)*(q-1)+1 = a = 0 mod n
- si a est premier avec n alors a est premier avec q (car q est un
diviseur de n),
puisque a est premier avec q on a :
aq-1 = 1 mod q (application du petit théorème de
Fermat) et
donc
ak(q-1)*(p-1) = 1 mod q
puisque a est premier avec p on a:
ap-1 = 1 mod p (application du petit
théorème de Fermat)
donc
ak(p-1)*(q-1) = 1 mod p .
On en déduit donc que :
ak(p-1)*(q-1) -1 = 0 mod p et
ak(p-1)*(q-1) -1 = 0 mod q
c'est à dire que :
ak(p-1)*(q-1) - 1 est un multiple de p et de q donc
de n = p*q puisque p et q sont premiers.
donc
ak(q-1)*(p-1) = 1 mod n et donc
ak(q-1)*(p-1)+1 = a mod n
- si a n'est pas premier avec n et si a < n, c'est que a est soit un
multiple de p soit un multiple de q (puisque a < n = pq).
Supposons que a soit un multiple de p :
a = 0 mod p donc
ak(p-1)(q-1)+1 = a = 0 mod p
aq-1 = 1 mod q car q est premier et a est premier avec q (th de
Fermat), donc
ak(p-1)(q-1)+1 = a mod q
Donc
ak(p-1)(q-1)+1 - a est un multiple de p et de q donc est un
multiple de n = pq (car p et q sont premiers).
Donc si n = p*q avec p et q premiers quelque soit a et quelque soit
k entier on a :
ak(p-1)*(q-1) = a mod n .
Revenons au codage.
Soit m un nombre premier avec
(p - 1)*(q - 1) (par exemple on peut choisir pour
m un nombre premier assez grand).
D'après l'identité de Bézout il existe deux entiers u et v tels que :
u*m + v*(p - 1)*(q - 1) = 1
donc :
au*m+v*(p-1)*(q-1) = a1 et comme
a(p-1)*(q-1) = 1 mod n,
au*m = a mod n
La fonction f de codage sera alors :
a - > au mod n pour a < p et a < q (pour avoir pgcd(a, n) = 1).
La fonction g de décodage sera alors :
b - > bm mod n.
et on a bien
g(f (a)) = au*m = a mod n ou encore g(f (a)) = a car a < n
La clé publique se trouvant dans l'annuaire sera (u, n),
la clé secrète sera (m, n), mais bien sûr, p et q devront
rester secrets.
Remarque : u et m jouent un rôle symétrique, par exemple u est
aussi premier avec
(p - 1)(q - 1) et donc si on connait u, p et q il
sera aisé de retrouver m avec l'identité de Bézout (
u*m + v*(p - 1)*(q - 1) = 1).
suivant: Troisième étape : le
monter: La fonction de codage
précédent: Première étape
Table des matières
Index
Documentation de giac écrite par Renée De Graeve