Skip to content

Instantly share code, notes, and snippets.

@rikaardhosein
Created July 14, 2013 01:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rikaardhosein/5992882 to your computer and use it in GitHub Desktop.
Save rikaardhosein/5992882 to your computer and use it in GitHub Desktop.
from Crypto.PublicKey import pubkey
from Crypto.Util import number
import fractions
import sys
MIN_SEED = int(sys.argv[1])
MAX_SEED = int(sys.argv[2])
SEED = MAX_SEED
def randfunc(n):
def rand():
global SEED
ret = SEED*0x1333370023004200babe004141414100e9a1192355de965ab8cc1239cf015a4e35 + 1
SEED = ret
return (ret >> 0x10) & 0x7fff
ret = ""
while len(ret) < n:
ret += chr(rand() & 0xff)
return ret
correct_modulus = 133542334266816908873627788991135098836872531174929294246169531210661376429243860064170039541966242804413057715139822380296022355504905790916703933165069728724833411797448828615450127927989084469577103148831167203596018572102137170380105783557008648639360019823792278259940952368577709045086814405497576841683
e = long(65537)
bits = 1024
debug = 1
while MAX_SEED > MIN_SEED:
SEED = MAX_SEED
p = q = 1L
while number.size(p*q) < bits:
p = pubkey.getStrongPrime(bits>>1, e, 1e-12, randfunc)
q = pubkey.getStrongPrime(bits - (bits>>1), e, 1e-12, randfunc)
modulus = p*q
gcd = fractions.gcd( modulus, correct_modulus )
if gcd > 1:
print 'GCD: %d\np: %d\nq: %d\n'%(gcd,p,q)
break
MAX_SEED-=1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment