from Crypto.Util.number import *
from secret import flag

p = getPrime(512)
q = getPrime(512)
r = getPrime(512)

m = bytes_to_long(flag)

e = 65537

c = pow(m, e, p*q*r)

print(f'n = {p*q*r}')
print(f'pq = {p*q}')
print(f'c = {c}')

 CRT로 풀린다

 

from Crypto.Util.number import inverse,long_to_bytes
n = 750663646847528873168937831391907810647591913965562495296199585082759057318274521553757550724463451891668175905206221877858317290777877060166997790624527965837837993129383290402509996587556406778482067347232022225466937668396768390983554357611376057823852179263682649072729435912583278183812954787442057976301035654942470184201720410477691326653029842426252391647509934740335989269071438620690320401576861478427178128804784352142271832603194431176323445880836139
pq = 80970512687406090889060992576336286518763523653333428346066206717567693624044162491796922556346210471950404967161997779545603412053582932354160368128117099634532601019309976159157713252768640669410333127578132624183514430252557952811102781031315190048386214745340936679285725364013916829276058253922234988379
c = 221975957171552618997196127189899209276336291387640550554967727731818563960555600691881715668156105819191779108737770660990397331961689607338541452069797368288215716485835439777459317512238532636172979397173548812054679237802827275184091619620252887678664409116710340000218841023351238456144820005968602870644031701303645229364391309952172259686888808938835775360009896210855708140351244441167461823250549764537506364091367096196182191704433664638829177854628679




r = n / pq
#print inverse(65537,r-1)
d = 8528872622026277937550303553635609937097487502827424222476157017734084188054492606869179010958997338558262439273241708142496780631708632488343298528728513
print long_to_bytes(pow(c,d,r))

'Crypto' 카테고리의 다른 글

Modes of Operation  (0) 2021.03.16
Padding  (0) 2020.12.20
[AES_OPT-128] c code  (0) 2020.12.19
[AES-128] c code  (0) 2020.12.19
[AES-128] ( no mode)  (0) 2020.12.19

+ Recent posts