from Crypto.Util.number import *
import secrets
flag = b"Ly_Flag{xxxxxxxxxxxxxxxx}"
BITS = 512
e = 5
p = getPrime(BITS)
q = getPrime(BITS)
N = p * q
print("p=",p)
print("q=",q)
print("N=",N)
m = bytes_to_long(flag)
k1 = secrets.randbelow(1000) + 2
k2 = secrets.randbelow(10000)
m1 = k1*m + k2
print("k1=",k1)
print("k2=",k2)
c = pow(m1, e, N)
print("c=",c)
class LCG:
def __init__(self, seed, a, b, m):
self.seed = seed
self.a = a
self.b = b
self.m = m
def generate(self):
self.seed = (self.a * self.seed + self.b) % self.m
return self.seed
a = getPrime(BITS//2)
b = getPrime(BITS//2)
n = getPrime(BITS*2)
lcg = LCG(c, a, b, n)
output = [lcg.generate() for _ in range(5)]
print("output=",output)
"""
N= 122214250920752611523055494073542994327530220064082397405157634393381305193635381655586532053264867424406286411800334909567684623711377817868640848334690221376818780214638183957432408557202872977540419988348393816683278820979353169149844178389448915530667252583831245135651883314818280670150205429590135611539
k1= 60
k2= 3315
output= [35789925187914771202353771978100940808276886011063535977633064092891949724341700806717398201218429909280863310111769779326414609689346670313528248532463430525364321104106497977628487455591345652199189699341538707135045122395243792227522188987143344779349585022529030383644596570172479710050934369371201277778, 23914232187055673115857839916082482516475823937985844847586052046648313585417117308762902677114734515030457025465181162381733571609955545704231472704794670370505537062512684171076544121779605032495382372020217878380948992865259696097939131920227849628760968653840837889070224831752598235443485940951145782942, 17613944433848166215410885525258038965641070783111851148475158415969257073238881200389860608258515132660412762635078402766256359905273557069114734278205290291930226504287734100263791100691757095953270586151268261514375911807980589342807499431358437314020507759744772924541393318619043569398405459869914405922, 4715116895029378991271000849320904174546816008517639418748551506151914458036866264985295801986339321922563327092387850622644606112918452468858242449827367969173280299840853035255533956585687129607074436477766777853296073345311050642757869196941801431081620289084124642767628393461806476315963271998295120986, 52654045611210876522564010764666740484635056602031869077823422527244435935404392315637182395710683658691541426934734669133892782650351389618057116582099088057965896925200548214828046883582403804392841335360941579865811891639039805045818119256070994053167696618115281926222438098135457821502715603618119898647, 90688646372009642036678464490222972955115637306000228260100293968061867968009976738667017048848522276986620476167548835336431366558761940400265695429275176867287341951808712634405374068366952984425281034060292264771956583968446837285775070331359191944348905290472704216324965439525462021628618267955986725148, 67803916007875677971157835146732258699552416391956745372746435508134139674069578495783800949468378910158177695876406812461357212054840440440243645923635683846819057553751671451376458545287382798308995024341215986843263555992262309920325336755325745609835890096360502740946819920489174462086650417739013983541, 278069542930162961841670028549350284082378767206642465608663588373266198899143495562550748081681198808014758843682656888623375913069482390772087143112694980215431041303714296716296859341616000303301884225689160211248881733345753443015056810185960549572550495000783606710692076655034221053017103981456799519, 33135594193739669114317168197968874163345116583820523729484986600269054871101066429025715846699537665511581619662403908931888590411378581823042065584671062228025409602421009735611585850035311086940151772386379345651088655400577187110641118493882928509315666309598785420157270620084704414106887187575283681365, 33404456263886586398570549197455592171858291914259246840041913702342985017724169569319029526244012643501563934784148494890860561152103607852177060638623856274066888809536264665271278633878236308423019246823624349702105216331622791617099246710295549300574485480140751479888535585982077382311123872995044477586]
"""
|