import timeit from random import randrange, seed seed("if it's very thicky spread") # RSA modulus and private key (e = 7) RSA64 = 13182664501463134277, 1883237784873976951 RSA253 = eval('961682562597881411641590768809133474206349583976947322897867717' '9636206689923, 549532892913075092366623296462361985239999384172' '2371101563943009445368867863') RSA1023 = eval('46779012676399015472096179742145050445326787851106170435412881' '80389315275659861619886482794628890433212976852180100266233872' '61386498186485139258764165882500116512628592755132773038077970' '89941330802378815257748223583011441295016010537501371224590782' '824901479722390485023736526036193995066248037583110873784331, ' '26730864386513723126912102709797171683043878772060668820235932' '45936751586091349497077990168359365961835986772674343009276498' '63649427535134365290722380504195116880212792695619535465906770' '78917366017422104580679241179647039832394696690086203424439426' '391647612073785939931212525110443626366633769162687524257143') for n, d in RSA64, RSA253, RSA1023: T = timeit.Timer('pow(c, d, n)', 'c = %d; d = %d; n = %s' % (randrange(n), d, n)) print "%d-bit modulus: %.6f" % (n.bit_length(), T.timeit(1000)/1000.0)