;ia jdZddlZddlZddlmZmZdedefdZdedefdZ dedefdZ d edefd Z dS) z(Functions for generating random numbers.N)common transformnbitsreturnct|d\}}tj|}|dkrAttjd}|d|z z}t jd||z}|S)zReads 'nbits' random bits. If nbits isn't a whole number of bytes, an extra byte will be appended with only the lower bits set. rB)divmodosurandomordstructpack)rnbytesrbits randomdata randomvalues ?C:\PYTHON\MyICR_Workspace\venv\Lib\site-packages\rsa/randnum.pyread_random_bitsrsr5!$$MFEF##J qyy"*Q--(( E ! [k22Z? cbt|}tj|}|d|dz zz}|S)z3Reads a random integer of approximately nbits bits.r )rr bytes2int)rrvalues rread_random_intr.s;"%((J   + +E Q519 E Lrc*t|}|dzS)zhReads a random odd integer of approximately nbits bits. >>> read_random_odd_int(512) & 1 1 r )r)rrs rread_random_odd_intr;s E " "E 19rmaxvaluectj|}d} t|}||krn|dzdkr|r|dz}|dz },|S)zReturns a random integer x with 1 <= x <= maxvalue May take a very long time in specific situations. If maxvalue needs N bits to store, the closer maxvalue is to (2 ** N) - 1, the faster this function is. rT r )rbit_sizer)rr!triesrs rrandintr#Hsix((H E )) H    2:??u? MH    Lr) __doc__r rrsarrintbytesrrrr#rrr)s/. !!!!!!!!CE* 3 3     s s    ccr