def pq(self): p, q = gen_pq(self.bits) n = str(p * q) g_phi = (p - 1) * (q - 1) p, q = map(str, (p, q)) self.plainTextEdit.setPlainText(p) self.plainTextEdit_2.setPlainText(q)
def initializePage(self): print g_bits print g_text p, q = gen_pq(int(g_bits)) global g_p global g_q global g_phi g_p, g_q = p, q n = str(p * q) g_phi = (p - 1) * (q - 1) p, q = map(str, (p, q)) self.plainTextEdit.setPlainText("%s\n(%s cijfers)" % (p, len(p))) self.plainTextEdit_2.setPlainText("%s\n(%s cijfers)" % (q, len(q))) self.plainTextEdit_3.setPlainText("%s\n(%s cijfers)" % (n, len(n)))
def make_keys(bits=1024): p, q = gen_pq(bits) n = p * q phi = (p - 1) * (q - 1) print phi for e in [3, 5, 17, 257, 65537]: if GGD(phi, e) == 1: break print e x = inverse(e, phi) d = x % phi print 'd =', d return (n, e), (n, d)
from priem import gen_pq from time import time from factorize import * adv = False for w in range(20,91): begin = time() p, q = gen_pq(w) gen_time = round(time() - begin,2) n = p*q if adv == True: print 'Generated %s bits keys in %s.' % (w, gen_time) print 'Primes %s and %s, product %s)' % (p, q, n) if w <= 60: begin = time() s, t = factorize_odd(n) tra_time = time() - begin print 'Factorized %s into %s and %s by trail in %s' % (n, s, t, tra_time) if w > 60: tra_time = '' begin = time() s, t = factorize_pollard(n) pol_time = time() - begin print 'Factorized %s into %s and %s by trail in %s' % (n, s, t, pol_time) else:
s += 2 def factorize_pollard(n): i1,j1 = 1,1 while True: i2 = i1**2+1 j2 = (j1**2+1)**2+1 i1,j1 = i2%n,j2%n s = GGD((i1-j1),n) if s <> 0 and s <> 1 and s <> n: return s,n/s if __name__ == '__main__': p = 6021174947 q = 8655372797 p, q = gen_pq(100) n = p*q #listoffactors = factorize_trial_adv(n,1) #for item in listoffactors: # print item #s,t = factorize_trial(n) #print 'De factoren van %s zijn %s en %s.' % (n,s,t) begin = time() s,t = factorize_pollard(n) print 'De factoren van %s zijn %s en %s.' % (n,s,t) print time() - begin