Répondre / Forum de mathématiques - Bibm@th.net

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

Répondre

Veuillez composer votre message et l'envoyer

Les questions suivantes sont faites pour éviter le spam. Si vous voulez ne plus les avoir, inscrivez-vous!

Quel est le résultat de 40+32?

Quel est le 7 ième chiffre de 4233185?

Retour

Résumé de la discussion (messages les plus récents en premier)

Golgup
30-06-2009 08:51:30

Re,

J'en profite pour dire à Fred que son applet http://www.bibmath.net/crypto/moderne/rsa.php3 donne des exposants de dechiffrement negatif! Le probleme serait vite réglé en conditionnant sa négativité et en y remediant: d=d-(p-1)(q-1)*-1

bye

Golgup
29-06-2009 10:06:23

Aller, je vous embête une derniere fois et vous propose ce code de generation de clefs rsa pour les interessés!

:

  1. from math import log
  2. from random import*
  3. def teun(s,f=0,t1=[]):
  4.     while s!=f:
  5.         s-=f
  6.         c=int(log(s)/log(2))
  7.         f=2**c
  8.         t1.append(c)
  9.     return t1
  10.  
  11. a=2
  12. def tdeux(p,a,u=0,z=a,j=a,t2=[a]):
  13.     while u!=t1[0]:
  14.         z=j**2%p
  15.         j=z
  16.         u+=1
  17.         t2.append(z)
  18.     return t2
  19.  
  20. def tetrois(t3=[],o=-1):
  21.     while o<len(t1)-1:
  22.         o+=1
  23.         t3.append(t2[t1[o]])
  24.     return t3
  25.  
  26. print"                                                                  *Generateur de clefs RSA*"
  27. print""
  28. print""
  29. b=input('Entrez a taille de la clef en bits:')
  30. print"------------------------------------------------------------------------"
  31. print""
  32. p=1
  33. while p<2**int((b+1)/2):
  34.     p=randrange(2**int((b-1)/2),2**int((b+1)/2))
  35.     if p%2==0:
  36.         p=p+1
  37.     s=p-1
  38.     t1=teun(s,f=0,t1=[])
  39.     t2=tdeux(p,a,u=0,z=a,j=a,t2=[a])
  40.     t3=tetrois(t3=[],o=-1)
  41.     m=reduce(lambda x, y: x *y, t3)%p
  42.     if m==1:
  43.         break
  44. q=1
  45. while q<2**int((b+1)/2):
  46.     q=randrange(2**int((b-1)/2),2**int((b+1)/2))
  47.     if q%2==0:
  48.         q=q+1
  49.     s=q-1
  50.     teun(s,f=0,t1=[])
  51.     t1=teun(s,f=0,t1=[])
  52.     tdeux(q,a,u=0,z=a,j=a,t2=[a])
  53.     t2=tdeux(q,a,u=0,z=a,j=a,t2=[a])
  54.     tetrois(t3=[],o=-1)
  55.     t3=tetrois(t3=[],o=-1)
  56.     m=reduce(lambda x, y: x *y, t3)%q
  57.     if m==1:
  58.         break
  59.    
  60. n=p*q
  61. e=2**16+1
  62. phi=(p-1)*(q-1)
  63.  
  64. def pgcd(a,b):
  65.     try:
  66.         while b!=0:
  67.             a=a%b
  68.             b=b%a
  69.         return a
  70.     except:
  71.         return b
  72.  
  73. def t1_t2(a,b):
  74.     try:
  75.         while b!=0:
  76.             a=a%b
  77.             t1.append(a)
  78.             t2.append(b/a)
  79.             b=b%a
  80.             t1.append(b)
  81.             t2.append(a/b)
  82.         return t2
  83.     except:
  84.         return t2
  85.  
  86. def xk(l=1,xk=[1,0,1]):
  87.     while l!=len(t1)-2:
  88.         l+=1
  89.         xk.append(t2[l-1]*xk[len(xk)-1]+xk[len(xk)-2])
  90.     return xk
  91.        
  92. while pgcd(e,phi)!=1:
  93.     e+=2
  94. if pgcd(e,phi)==1:
  95.     t1,t2=[e,phi],[e/phi]
  96.     t2=t1_t2(e,phi)
  97.     xk=xk(l=1,xk=[1,0,1])
  98.     d=((-1)**(len(t1)-2))*xk[len(xk)-2]
  99.     if d<0:
  100.         d=d-phi*-1
  101.  
  102. p='?'
  103. q='?'
  104. phi='?'
  105.                                
  106.  
  107. print"                                                  Clef publique:"
  108. print""
  109. print 'n','=',n
  110. print 'e','=',e
  111. print""
  112. print"------------------------------------------------------------------------"
  113. print""
  114. print"                                                  Clef privée:"
  115. print""
  116. print 'd','=',d
  117. print""
  118. print"------------------------------------------------------------------------"

Si vous voulez connaître les 2 composants de n ainsi que phi(n) ou encore vérifier que ed=1 mod phi, supprimez juste ces lignes

:

  1. p='?'
  2. q='?'
  3. phi='?'

@+++

Pied de page des forums

Propulsé par FluxBB