7 def testPrimaliteFermat(n,t):
17 #calcul de a^(n-1) [n]
18 #if a**(n-1) % n != 1 :
19 if pow(a,n-1,n) != 1 :
32 def testPrimaliteMillerRabin(n,t):
37 # ecrire n-1 comme 2**s * d
54 while r < s and not ret:
55 if pow(a, 2**r * d, n) == n-1:
70 #print "probabilite d'etre premier (FERMAT)", testPrimaliteFermat(n,500)
71 #print "probabilite d'etre premier (Miller Rabin)", testPrimaliteMillerRabin(n,30)
74 def genereUnNombrePremier(nbChiffre):
77 mini = 10**(nbChiffre-2)
78 maxi = 10**(nbChiffre-1)-1
79 chiffreFinal=[1,3,7,9]
80 while (not estPremier):
81 r = randint(mini,maxi)*10
82 r += chiffreFinal[randint(0,3)]
85 if testPrimaliteMillerRabin(r,50):
92 (r,n)= genereUnNombrePremier(100)
100 if b==0: return [1,0]
103 return [uv[1],uv[0]-uv[1]*(a/b)]
107 (p,_)= genereUnNombrePremier(100)
108 (q,_)= genereUnNombrePremier(100)
113 (e,_)= genereUnNombrePremier(30)
114 print "cle publique",e
121 m=3402752281514000316845
124 print "message encodee ",a
127 print "message decodee ",mp
146 n=9623827 #et 343570291. % res=2953*3259 res = 17729*19379
147 print "probabilite d'etre premier (FERMAT)", testPrimaliteFermat(n,t)
148 print "probabilite d'etre premier (MILLER-RABIN)", testPrimaliteMillerRabin(n,t)