Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
32 views
import hashlib, time; p = 19557005198709002903944860293031210393112763219086296641657077101075696217230957575932867920574816565856404011416908876733063974554042055901449481509845537165833627083609136426386625960849573203936690977282752217830467255076903813033768202255463477317279507253420233052258146393806024179130344501759742626253484354878829682461413002143954786668386100202257237258007726886368228024987052808444032800050116408995869561195208576647050961019393809940446490709061546503439488751331252440431940049716566765873615456614911458658341732120931319694200689362617296630728389003180670326151653001322354906363854478585334821235883; q=(p-1)/2; sk = ZZ.random_element(q) n=256; g=2; r = ZZ.random_element(q); h = power_mod(g,sk,p); y = 18061460912493419771843011597274212462803574811222229376629862108656143652025096709800958993781070636744316825269436971612433991805292662516554512840268054643830143950112729036741373960470042618746772573239869346946002532801951425137246810166516041078818395840030901176669704192937504788797745333035314396840895507443235788983867973815017486784354254352307208633494385916281906895096990700255961425097697506305100342763385467602718780565086702707187543200456344183042292995896788048062448014828159224716401523688027664993028691943383563286061404512964569085767018461653393625185337746511346409018197053181361443185293; ptxt = "hillxxxxxxxxxxxx"; def xor_str(a,b): result = int(a, 16) ^^ int(b, 16) # convert to integers and xor them return '{:x}'.format(result) def enc_ex3(r,ptxt): c1 = power_mod(2,r,p); pad = hashlib.sha256(hex(power_mod(h,r,p))).digest().encode("hex"); hexptxt = ptxt.encode("hex"); c2 = xor_str(pad,hexptxt) return [c1,c2]
(7339582096000011343460481625097937802525720224357966276096528025827903804417735942926658661147978516097875352017303381410209055926259598691810080062704411372210836700312287920158065081753579046387702770937506863701756958267843581006635444286314394232479341076327173959214225695715342777248651858048350229241451278379775294611919181923750517378098202374479093138862128191788843014207414350520517080164527207274352454003507413443175766659611012806612344265514022642394794727939391540580131667160580329838184963531917950780964848584784432832370840914000488489875432752595199108132056679245845698246363224775008367911311, 1022646168303476876803520820006904213303662775528166089155366876126386214306495876371878488423284799182911580389574808635331492350427205061420202584243421624560364297213384399932897698434429391742726307255095647079883413563473531492755678698630592891232907004878805665834738098121592747691337163348607264417128216532774034421754765818843804806215547943089681925005664546097024577371190824902544985050959057755926934133494737430995780668744142179671480196298918204182685838331790160559334118103623056090729519164163155265014546287236617403646146265555536225326997917781127379110046364198467774472536987226363196069119)
enc_ex3(r,ptxt)
[11215481293350606945135720774196331202305596791771506049074345841515143945191103855456970215426299390551762859737303408376116302638112955235104808172935583637294265064585513798513795232554047132373327785112092217578536308154268820554525825823781300591307398875647666442392058053510499104251808065837826687564823027956931601855796839631071773601442124481697098864014352958951355157828334057648978403945948912354130373209285023828524409409193323662584772437663543257429291584706715277651630942811172828043086615857555501557695788400587149591284038497680728094294694080614720774622143380514596402356325731411686697307584, '2dda49bb206d70dc6e55eb4331def8fff8479ddc51ed4fe5fcae78d7e4b9320a']
c1 =11215481293350606945135720774196331202305596791771506049074345841515143945191103855456970215426299390551762859737303408376116302638112955235104808172935583637294265064585513798513795232554047132373327785112092217578536308154268820554525825823781300591307398875647666442392058053510499104251808065837826687564823027956931601855796839631071773601442124481697098864014352958951355157828334057648978403945948912354130373209285023828524409409193323662584772437663543257429291584706715277651630942811172828043086615857555501557695788400587149591284038497680728094294694080614720774622143380514596402356325731411686697307584 c2 = '2dda49bb206d70dc6e55eb4331def8fff8479ddc51ed4fe5fcae78d7e4b9320a' def dec_ex3(c1,c2): pad = hashlib.sha256(hex(power_mod(c1,sk,p))).digest().encode("hex"); message = xor_str(pad,c2) return message.decode("hex")
dec_ex3(c1,c2)
'hillxxxxxxxxxxxx'