1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| from Crypto.Util.number import * from secret import flag import random
def getMyPrime(): while True: r = random.getrandbits(64) _p = r**6 -3*r**5 - r**4 + r**2 - r - 6 _q = r**7 + 2*r**6 + r**5 + 4*r**4 + 7*r**2 + r + 4653 if isPrime(_p) and isPrime(_q): return _p, _q def enc(m, n): return pow(m, 65537, n)
def LCG(s,a,b,n): return (a*s + b) % n
seed = bytes_to_long(flag) P = getPrime(512) a = random.randrange(0,P) b = random.randrange(0,P)
def Roll(): global seed seed = LCG(seed,a,b,P) return seed % 2**16
p, q = getMyPrime() n = p * q enc_P = enc(P, n) print(f"n = {n}") print(f"enc_P = {enc_P}")
out = [] for _ in range(40): out.append(Roll())
print(f"a = {a}") print(f"b = {b}") print(f"out = {out}") """ r = 1248775963213848425 P = 10679387699123200522776360035184725927822172255453595568464894884736102462568579313264894449779104030120028056158023524486966766295648236135714849745610937 n = 17959692613208124553115435318871530105762927141420294800783695207170608966804977782615874404539156257549097962410144332053383210075663138848832474791712256427111304125146378883542387121684653496644116081809328796925343393644118376497507 enc_P = 17215745298239635988196009014709535403293865406390546681749129213899045156482782458937447412919331336842808052179915132663427715069134196783415529688715962754860563850858056507148936427379551986735103284388996678146580229028006898491552 a = 2759277675743644814124420138047586760905070650864591936190199977578763421196999718749092450720072564786874114432179104175692800471519816376692104515142375 b = 8111240578821759579875175166986910195923820191652867334412871591814076020421468033017946066268237980082938735686222173713853299600396887041341974719819186 out = [39566, 15295, 19818, 55685, 49100, 6517, 2675, 9567, 37243, 40312, 42906, 35874, 44178, 1256, 40298, 29149, 35721, 19886, 63020, 50116, 6844, 39897, 16134, 50218, 44609, 46188, 52712, 49903, 20933, 5441, 19411, 8330, 6904, 39350, 60853, 43446, 35910, 43728, 61533, 13757] """
|