[Python] Créer paire de clé Rsa
Résolu/Fermé
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
-
2 avril 2005 à 15:07
pacificator - 21 déc. 2006 à 12:26
pacificator - 21 déc. 2006 à 12:26
A voir également:
- [Python] Créer paire de clé Rsa
- Clé windows 10 gratuit - Guide
- Clé usb non détectée - Guide
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
3 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
2 avril 2005 à 15:49
2 avril 2005 à 15:49
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:
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:
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 :-)
Finalement, j'ai plutôt vérifié tous les nombres (dans une certaine portion d'entiers) qui vérifient:
self.e*x%test==1où 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 :-)
Il existe une librairie C qui convient parfaitement pour s'amuser avec RSA: gmp.h (https://www.swox.com/
Elle permet notament de
- travailler avec des nombre de tres grande taille (512, 1024, 2048 bits...)
- trouver facilement des nombres premiers (p et q)
- generer des nombres aleatoires (e)
- faire une inversion avec modulo (d)
- calculer une puissance avec modulo (encryption/decryption RSA)
Avec cette librairie, la generation des cles devient simplissime...
Elle permet notament de
- travailler avec des nombre de tres grande taille (512, 1024, 2048 bits...)
- trouver facilement des nombres premiers (p et q)
- generer des nombres aleatoires (e)
- faire une inversion avec modulo (d)
- calculer une puissance avec modulo (encryption/decryption RSA)
Avec cette librairie, la generation des cles devient simplissime...
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
3 nov. 2006 à 22:40
3 nov. 2006 à 22:40
Même si ma question date d'il ya un an, je te remercie, car ma curiosité sur ce sujet est toujours d'actualité :-)