Skip to content

Instantly share code, notes, and snippets.

@mactkg
Created February 25, 2012 06:39
Show Gist options
  • Save mactkg/1907055 to your computer and use it in GitHub Desktop.
Save mactkg/1907055 to your computer and use it in GitHub Desktop.
import datetime
import random
import itertools
#the prime generetor
def genPrime():
gen = itertools.count(2)
while True:
prime = gen.next()
yield prime
gen = itertools.ifilter(lambda x, prime=prime: x % prime, gen)
def coPromeCheck(m, n):
if(n > m):
buf = m
m = n
n = buf
while True:
if(n == 0):
if(m == 1):
return True
else:
return False
buf = n
n = m % n
m = buf
#generate prime
gengen = genPrime()
primes = []
print "genereting prime..."
for i in gengen:
if i > 100000:
break
if i > 10000:
primes.append(i)
#select p, q
p = random.choice(primes)
q = random.choice(primes)
print "p:%d, q:%d" % (p, q)
#select e
print "searching e..."
while True:
e = random.randint(1000, 1000000)
if coPromeCheck(e, p) and coPromeCheck(e, q):
break
print "p:%d, q:%d, e:%d" % (p, q, e)
#select d
print "searching d..."
d = 0
law = (p - 1) * (q - 1)
while True:
d += 1
if (e * d) % law == 1 % law:
break
print "p:%d q:%d e:%d, d:%d" % (p, q, e, d)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment