import hashlib m = "Cryptology 2022".encode('utf-8') # Verify def verify(m, sig, dom, y): p,q,g = dom r,s = sig hm = int(hashlib.sha256(m).hexdigest(), 16) if r<1 or r>=p or s<1 or s>=q: return False return pow(g,s,p)==((pow(y,r,p)*pow(r,hm,p))%p) p = 51186152874583406742886131203845213865524137856185538111332787599280923701945235094495803362328649016775103412102674614786213991084179706321562717867728052678475658600820463815010166054352070631991246406415243961420140642494220572499528426051312521282808652115853998371423137119981109532533504315807268934187 q = 114245815476963306244376395383739198048917677950804345993252465439266966941097 g = 22582219741270142739874187809794040437008751542811630511508733537329194716426904316803114572331300462437973738762676108017853690772123304479318151325433993732862625486046124171767980585068396823557948916783193441487820858188797768147352762007863069794252958798026128747495412023033571571885963366489917790789 y = 48302269683880408322035017534852942449493957204504297010909117320267911011103607382003134452176337288327643284443650438667231579513130177841516333108435776374618407889022873323500337060138064086721304565177063031977452649546141017126168139460754215907842604667833291093659329487249840516332991648036121430342 r,s = (30611817271878285560323876384323035897011645337227611924340927738393900126850185684691455948892007216796161882660883574872539328986551886240854458945838378668020000892204630327231709886480329401494316115410477200366264650910289646064525404932393964862737841742999972356559067935779898325103433313887985264994, 40954985201243646432426395099911952001207436401598391530098233968327634770085) print(verify(m, (r,s), (p,q,g), y))