Skip to content

Latest commit

 

History

History

Really Secure Algorithm

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Really Secure Algorithm

Event Title Category Cost
HSCTF 6 Really Secure Algorithm Cryptography ~300

Discription

Written by: cppio

I heard about RSA, so I took a go at implementing it.

Solution

Judging by the title of the task and initial information we can be pretty sure that message is encrypted by means of RSA cipher. We are given n, e and c. Firstly, let's try to factorize n. Using factordb.com we can understand that n is a square of another number. For this reason, usual method of calculating Euler function is useless. But it isn't a problem. Let's use another formula:

φ(p^α) =p^α - p^(α-1)

Now we have to write a short program:

from Crypto.Util.number import inverse
import binascii
n = 263267198123727104271550205341958556303174876064032565857792727663848160746900434003334094378461840454433227578735680279553650400052510227283214433685655389241738968354222022240447121539162931116186488081274412377377863765060659624492965287622808692749117314129201849562443565726131685574812838404826685772784018356022327187718875291322282817197153362298286311745185044256353269081114504160345675620425507611498834298188117790948858958927324322729589237022927318641658527526339949064156992164883005731437748282518738478979873117409239854040895815331355928887403604759009882738848259473325879750260720986636810762489517585226347851473734040531823667025962249586099400648241100437388872231055432689235806576775408121773865595903729724074502829922897576209606754695074134609
p = 16225510719965861964299051658340559066224635411075742500953901749924501886090804067406052688894869028683583501052917637552385089084807531319036985272636554557876754514524927502408114799014949174520357440885167280739363628642463479075654764698947461583766215118582826142179234382923872619079721726020446020581078274482268162477580369246821166693123724514271177264591824616458410293414647
e = 65537
c = 63730750663034420186054203696069279764587723426304400672168802689236894414173435574483861036285304923175308990970626739416195244195549995430401827434818046984872271300851807150225874311165602381589988405416304964847452307525883351225541615576599793984531868515708574409281711313769662949003103013799762173274319885217020434609677019589956037159254692138098542595148862209162217974360672409463898048108702225525424962923062427384889851578644031591358064552906800570492514371562100724091169894418230725012261656940082835040737854122792213175137748786146901908965502442703781479786905292956846018910885453170712237452652785768243138215686333746130607279614237568018186440315574405008206846139370637386144872550749882260458201528561992116159466686768832642982965722508678847

phi = pow(p,2) - p
d = inverse(e,phi)
m = pow(c,d,n)
print(bytes.fromhex(hex(m)[2:]))

Therefore, we get the flag:

b'hsctf{square_number_time}'