Ich habe ein Programm zum RSA- Verschlüsselungsverfahren geschrieben. Aus irgendeinem Grund wird das e (in meinem Code: a) aber immer falsch berechnet und ich weiß nicht, woran es liegt.
Irgendwelche Ideen?
Script:
Code: Alles auswählen
import random
from fractions import gcd
class RSA_Verschlusselung():
def __init__(self, p,q):
self.p=p
self.q=q
def Alice_1(self):
self.N= self.p*self.q
self.m=(self.p-1)*(self.q-1)
for i in range (2,self.N):
self.gcd = gcd(self.m,i)
print i, self.gcd
if self.gcd == 1:
self.a=i
print 'p:', self.p, 'q:', self.q, 'N:', self.N, 'a:',self.a, 'm:', self.m
return self.a, self.N
def Bob_1(self):
a, N = self.Alice_1()
X= random.randint (0,N)
print 'X:', X
self.y=(X^a)%N
print 'Y:', self.y
return self.y
def Alice_2(self):
self.y= self.Bob_1()
for i in range (2,500):
modInv= (self.a*i) % self.N
if modInv== 1:
self.d=i
self.message= (self.y^self.d) % self.N
print 'd:', self.d, '\n', 'X:', self.message
return self.message
#test
verschl= RSA_Verschlusselung(11,13)
verschl.Alice_2()