Advertisement
mgostih

Prime RSA number generator (RSA-4096)

Jul 10th, 2015
397
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.38 KB | None | 0 0
  1. import random
  2. g = random.SystemRandom()
  3. lprimes= [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61,67,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541]
  4. def decomp(n):
  5.     q = n-1
  6.     s = 0
  7.     while not q&1:
  8.             s+=1
  9.             q= q//2
  10.     return s,q
  11. def trial(n):
  12.     for i in lprimes:
  13.         x= n%i
  14.         if not x:
  15.             return False
  16.     return True
  17. def mrt(n,t=7):
  18.     if n&1:
  19.         n=n
  20.     else:
  21.         n=n+1
  22.     if trial(n):
  23.         s,q = decomp(n)
  24.         for _ in range(t):
  25.                 a=random.randrange(2,n-1)
  26.                
  27.                 y = pow(a,q,n)
  28.                 if y == 1 or y == -1:
  29.                         return n
  30.                 else:
  31.                         if s>1:
  32.                             for i in range(1,s):
  33.                                 if pow(a,(2**i)*q,n) == -1:
  34.                                         return n
  35.         return False
  36. if __name__ == "__main__":
  37.     while 1:
  38.         a = random.randrange(10**255,10**256)
  39.         x = mrt(a)
  40.         if x:
  41.             print(x)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement