Flux rss
Collection CommentÇaMarche.net
Rechercher : dans
Par :

[Python] Créer paire de clé Rsa

kilian, le samedi 2 avril 2005 à 15:07:19 
 Signaler ce message aux modérateurs

Bonjour,

J'aimerais reproduire l'algo décris ici:
http://sebsauvage.net/comprendre/encryptage/crypto_rsa.html (voir "créer une paire de clé")

Mais je fais face à un problème. Je me retrouve devant:
On choisit d tel que 71*d mod 1008 = 1

C'est l'exemple du lien , le soucis est que je dois trouver d en tant que nombre aléatoire. Le seul truc que j'ai trouvé c'est de doner une nouvelle valeur aléatoire à d jusqu'à ce qu'il vérifie la condition donnée au dessus.
Je crois que ça fonctionne chez moi mais ça donne un algo très très lent.

Je vous donne mon bout de code au cas où vous auriez une autre idée (j'ai laissé la correspondance des noms de variable entre l'algo et le code:

class keygen:
	def __init__(self,len_premiers,premiers):  # premiers est une liste de nombres 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
		
		
		test=(p-1)*(q-1)
		self.e=test  #Cette valeur permettra de lancer la boucle en dessous pour trouver la vraie valeur de e
		
		while (test%self.e==0):
			self.e=random.choice(range(0,test))
		
		self.d=0.3333   #Idem, cette valeur sert à lancer la boucle en dessous pour trouver d, c'est pas très élégant mais j'ai pas trouvé mieux
		
		while (self.d)==0.3333 or (self.e*self.d)%test!=1:
			self.d=random.choice(range(len(premiers),1000)) # Et voilà c'est ici que ça coince je crois, ça rend le code très lent


Si vous avez juste une astuce pour trouver d d'une façon plus rapide, faite m'en part.
Merci d'avance :-)
Configuration: Debian/Python 2.3

1

kilian, le samedi 2 avril 2005 à 15:49:28

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 :-)

Répondre à kilian

2

cryptoman, le vendredi 3 novembre 2006 à 22:14:32

Il existe une librairie C qui convient parfaitement pour s'amuser avec RSA: gmp.h (http://www.swox.com/gmp/)

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...

Répondre à cryptoman

3

kilian, le vendredi 3 novembre 2006 à 22:40:03

Même si ma question date d'il ya un an, je te remercie, car ma curiosité sur ce sujet est toujours d'actualité :-)

..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...

Répondre à kilian

4

 pacificator, le jeudi 21 décembre 2006 à 12:26:19

Il existe la lib pyCrypto et ezPyCrypto qui l'interface de maniere plus pythonique.

Répondre à pacificator
Clé rsa j'ai essayé de créer une connection ssh avec un ordinateur distant j'ai envoyé ma clé publique au serveur et je l'ai placée dans le .ssh et je l'ai renommée en authorized_keys mais ça ne marche pas puisque à chaque fois on me demande le password pour... www.commentcamarche.net/forum/affich-1879587-cle-rsa
Créer une clé usb bootable d'un cd de windows Boujour Voila j'ai un cd de windows xp x64 bootable et je voudrais créer une clé usb sur laquel je pourrai démarrer pour installer windows sans utiliser le cd -> utiliser la cle comme un cd d'installation de windows j'ai fait une image iso du cd. j'ai... www.commentcamarche.net/forum/affich-3249648-creer-une-cle-usb-bootable-d-un-cd-de-windows
[Python]Création de listes (Résolu) (Re-)Bonjour J'ai encore un problème.... Je souhaiterai créer x listes grâce à une boucle(). Je fais parcourir mon indice de 0 à 4 (par exemple) et ma boucle me créé 4 listes appelées liste1, liste2, liste3, liste4. Comme le nombre de liste à créer... www.commentcamarche.net/forum/affich-2170749-python-creation-de-listes
Votre première application graphique avec Python et GladeCe guide vous aidera à créer pas à pas votre première application graphique. Nous allons utiliser le langage de programme Python et l'API graphique GTK, en utilisant le logiciel Glade pour créer facilement les interfaces graphiques. C'est de la... www.commentcamarche.net/faq/sujet-8014-votre-premiere-application-graphique-avec-python-et-glade
Comment créer une clé USB bootable ?bonjours à tous ! j ai un PC portable sans lecteur disquette, je cherche le moyen de booter sur ma clé USB. www.commentcamarche.net/forum/affich-369182-comment-creer-une-cle-usb-bootable
Creer une cle etrangere sur sqlbonjour comment creer une cle etrangere sur sql quand on veut creer une table merci de me donner le code www.commentcamarche.net/forum/affich-873361-creer-une-cle-etrangere-sur-sql
Comment créer une clé de registreBonjour à tous Voilà j'aimerai créer des clés de registres tt simplement. Alors exicte il un programme avec lequel on pourrai faire cela, et si oui, comment s'y prendre ? Merci de vos réponses www.commentcamarche.net/forum/affich-1374998-comment-creer-une-cle-de-registre
Télécharger HP USB Disk Storage Format ToolHP USB Disk Storage Format Tool est tout simplement un petit utilitaire de formatage de support USB ou un lecteur MP4. Le programme permet aussi de créer des clés amorçables ( bootable ). Ce logiciel fonctionne avec toutes les clés et lecteurs MP4... www.commentcamarche.net/telecharger/telecharger-3673527-hp-usb-disk-storage-format-tool
Télécharger Storage Vault DemoCe logiciel vous permettra de crypter vos fichiers à l’aide d’une clé RSA et des algorithmes de cryptage. Vous aurez la possibilité d’effectuer des recherches de vos fichiers sécurisés, d‘ajouter des commentaires à vos fichiers... www.commentcamarche.net/telecharger/telecharger-34060559-storage-vault-demo
Le chiffrement avec RSAle système RSA Le premier algorithme de chiffrement à clé publique (chiffrement asymétrique) a été développé par R.Merckle et M.Hellman en 1977. Il fut vite rendu obsolète grâce aux travaux de Shamir, Zippel et Herlestman, de célèbres... www.commentcamarche.net/contents/crypto/rsa.php3