Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
hackingweek_2014:crypto:crypto5 [2014/03/03 02:11] ganapati créée |
hackingweek_2014:crypto:crypto5 [2017/04/09 15:33] (Version actuelle) |
||
---|---|---|---|
Ligne 21: | Ligne 21: | ||
**Solution :** | **Solution :** | ||
+ | |||
+ | Il s'agit d'un simple logarithme discret à résoudre, i.e. trouver x tel que X=g^x mod p. | ||
+ | |||
+ | Il est possible d'utiliser l'outil magma pour le résoudre (http://magma.maths.usyd.edu.au/calc/) | ||
+ | |||
+ | <code> | ||
+ | p:=79293686916250308867562846577205340336400039290615139607865873515636529820700152685808430350565795397930362488139681935988728405965018046160143856932183271822052154707966219579166490625165957544852172686883789422725879425460374250873493847078682057057098206096021890926255094441718327491846721928463078710174998090939469826268390010887; | ||
+ | g:=73114111352295288774462814798129374078459933691513097211327217058892903294045760490674069858786617415857709128629468431860886481058309114786300536376329001946020422132220459480052973446624920516819751293995944131953830388015948998083956038870701901293308432733590605162069671909743966331031815478333541613484527212362582446507824584241; | ||
+ | X:=53710695204323513509337733909021562547350740845028323195225592059762435955297110591848019878050853425581981564064692996024279718640577281681757923541806197728862534268310235863990001242041406600195234734872865710114622767319497082014412908147635982838670976889326329911714511434374891326542317244606912177994106645736126820796903212224; | ||
+ | |||
+ | Log(GF(p)!g, GF(p)!X); | ||
+ | </code> | ||
+ | |||
+ | Le résultat tombe alors : | ||
+ | <code> | ||
+ | 5987017916693979800961865907625956492746942018842897309081319033525436025200275\ | ||
+ | 9467705768337098285569957371223987423277240609978767607029041030497475585357789\ | ||
+ | 74508050668215058880480572837679469513461940184995866029170866715848982 | ||
+ | </code> | ||
+ | |||
+ | Il suffit alors de calculer Y^x mod p, en quelques ligne de python : | ||
+ | <code> | ||
+ | >>> p=79293686916250308867562846577205340336400039290615139607865873515636529820700152685808430350565795397930362488139681935988728405965018046160143856932183271822052154707966219579166490625165957544852172686883789422725879425460374250873493847078682057057098206096021890926255094441718327491846721928463078710174998090939469826268390010887 | ||
+ | >>> Y=17548462742338155551984429588008385864428920973169847389730563268852776421819130212521059041463390276608317951678117988955994615505741640680466539914477079796678963391138192241654905635203691784507184457129586853997459084075350611422541722123509121359133932497700621300814065254996649070135358792927275914472632707420292830992294921992 | ||
+ | >>> x=5987017916693979800961865907625956492746942018842897309081319033525436025200275946770576833709828556995737122398742327724060997876760702904103049747558535778974508050668215058880480572837679469513461940184995866029170866715848982 | ||
+ | >>> pow(Y,x,p) | ||
+ | 13209953273847904538937959330024620309948373964029285268129438495125916049103104947558307756205640430956011327318451971143649388976770482679169393296835669455452165748588628944673299856366435979160842244913860009798074516378816385040186737956522363508690793823200979322371545890826154011044304502071323934414763375923268294720810314905L | ||
+ | </code> | ||
+ | |||
+ | Puis le md5 : | ||
+ | <code> | ||
+ | $ echo 13209953273847904538937959330024620309948373964029285268129438495125916049103104947558307756205640430956011327318451971143649388976770482679169393296835669455452165748588628944673299856366435979160842244913860009798074516378816385040186737956522363508690793823200979322371545890826154011044304502071323934414763375923268294720810314905 | md5sum | ||
+ | e4b7e1d7768b7ca4002671754e061919 | ||
+ | </code> |