rom random import randint
def tprimo(n):
for i in range (2, n):
if n%i == 0:
return False
return True
def genera_primo():
while True:
n = randint(50,100)
if tprimo(n):
break
return n
def crea_e(phi):
e = genera_primo()
if (mcd(phi,e) == 1):
return e
else:
crea_e(phi)
def mcd(phi,e):
if phi%e == 0:
return e
else:
return mcd(e, phi%e)
def mcde(e,phi):
a, a1 = 0, 1
b, b1 = 1, 0
while phi:
C = e // phi
e, phi = phi, e%phi
a, a1 = a1 - C*a, a
b, b1 = b1 - C*b, b
return (a1, b1, e)
def inverso(e, phi):
a, q, gcd = mcde(e, phi)
if gcd == 1:
return (a + phi) % phi
else:
return 0
def llaves(usuario,d,e,n):
a =str(usuario)+" "+str(d)+" " +str(e)+ "\\n"
b = str(usuario)+" "+str(d)+" "+str(n)
arch = open("llaves.txt","a")
arch.write(a)
arch.close
usuario = str(usuario)+".txt"
arch2 = open(usuario,"a")
arch2.write(b)
arch2.close
def main():
usuario = raw_input(\'usuario: \')
p = genera_primo()
q = genera_primo()
n = p * q
phi = (p-1)*(q-1)
e = crea_e(phi)
d = inverso(e,phi)
llave = llaves(usuario,d,e,n)
usuario = raw_input(\'usuario: \')
p = genera_primo()
q = genera_primo()
n = p * q
phi = (p-1)*(q-1)
e = crea_e(phi)
d = inverso(e,phi)
llave = llaves(usuario,d,e,n)
print p
print q
print n
print e
print phi
print d
main()