Aaah ça y est j'ai trouvé.
Finalement, j'ai plutôt vérifié tous les nombres (dans une certaine portion d'entiers) qui vérifient:
self.e*x%test==1 où x sont les entiers à vérifier.
Puis j'ai posé une boucle au cas ou cette expression ne marcherais pas avec la valeur la valeur de e dans une certaine plage de x.
Ca donne:
class keygen:
def __init__(self,len_premiers,premiers):
ref_p=random.choice(range(0,len_premiers))
ref_q=random.choice(range(0,len_premiers))
p=premiers[ref_p]
q=premiers[ref_q]
self.n=p*q
self.d=0
while not self.d:
test=(p-1)*(q-1)
self.e=test
while (test%self.e==0):
self.e=random.choice(range(2,test))
liste=range(len(premiers),len(premiers)+1000)
liste_d=[]
for nb in liste:
if ((self.e*nb)%test==1):
liste_d.append(nb)
try:
self.d=random.choice(liste_d)
except:
pass
Bon ça génère bien trois nombres, maintenant à savoir si ça génère des clés rsa valides, rien n'est moins sûr :-)


