Académique Documents
Professionnel Documents
Culture Documents
12 Crypto 2022/2023
Faculté de Technologie M2 - ST
Département ATE
Pour trouver e, il doit être impair, et que le PGCD (e,phi) = 1. Sous matlab la fonction gcd(.,.) permet de calculer
le PGCD de 2 nombres.
Une routine possible :
e = NaN
for i = 3 : 2 : phi – 1
if gcd(i, phi) == 1
e = int32(i)
break
end
end
La prochaine étape est de calculer d, l’inverse de e. Nous pouvons utiliser l’algorithme d’Euclide étendu (TP 4),
ou utiliser la routine
v=0
d=0
while v~=1
d=d+1
v=mod (d*e, phi)
end
On cherche d tel que : mod (d*e, phi) = 1, dans ce cas d est l’inverse de e [phi].
Pour un choix de p et q, le choix de e peut ne pas être unique.
Pour avoir une de plus grande valeur de e, on peut prendre for i = (p-1)/2 : 2 : phi – 1
- Il est possible qu’il n’existe pas de e tel que PGCD (e,phi) = 1
if isnan(e)
error (' pas de e tel que PGCD = 1 ')
end
- d peut être négatif, dans ce cas il faut ajouter phi, d+phi
If d < 0
d = phi + d;
end
p q e d
i = 3 : 2 : phi – 1 i = (p-1)/2 : 2 : phi – 1 i = 3 : 2 : phi – 1 i = (p-1)/2 : 2 : phi – 1
67 73 5 37 1901 3853
271 257 7 137 29623 39353
397 61 7 n’existe pas 10183 xxxx
Si e n’existe pas, on peut chercher par exemple a partir de min [(q-1)/2, (p-1)/2] pour augmenter nos
chances de trouver un e. (pour l’exemple : (397,61) p>>q)