Advertisement
foryou97

Franklin-Reiter related message attack

Aug 16th, 2018
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.92 KB | None | 0 0
  1. # Franklin-Reiter related message attack
  2. # https://crypto.stackexchange.com/questions/30884/help-understanding-basic-franklin-reiter-related-message-attack
  3. c1 = int(open('ciphertext1').read().encode('hex'), 16)
  4. c2 = int(open('ciphertext2').read().encode('hex'), 16)
  5.  
  6.  
  7. n = 861989937789654426343461243692067541646389136311279472446273771380858591625799045480051880016167718577658753128114583588383932472239887532172654339870957744753326309084673348480208200721928375516193389541702362452779965541554418677435608451699395256247138474396834520098936161405270620432424672291929888064130422062921966409668948497829705768760525774247650535053422643580738401556942324260544893782468891562816590270831614624237877973003686291610265574551629414163200950228047285602529516064690646175978064578814463967642861445483802710181935820557001553628723227309919458243310054535987861396335937057322519432286790724315958028243706586026951293434287385440723446396785106065925954282107811068208807162110744413874784050820334181968892572151375893316164421299682073611671735120835384408284028006058512208895055633703444944571240009593754857230895392515268894872261726043200570474182492569784574170294738999962439991665188355923101471407683779419743815417334789620414324520353716086440275136258345544515245749214223565224488530498725011173014355937540112656062646800663153687788062813622722398138482615418491235933205129196807880212257539452423260828545503342523786106829637208140030098553391575548646889945502359545728826142377267
  8. e = 17
  9.  
  10. r = 614039 - 525689
  11.  
  12. R.<X> = Zmod(n)[]
  13. f1 = X^e - c1
  14. f2 = (X + r)^e - c2
  15.  
  16. # GCD is not implemented for rings over composite modulus in Sage
  17. # so we'll do it ourselves. Might fail in rare cases, but we
  18. # don't care.
  19. def my_gcd(a, b):
  20.     return a.monic() if b == 0 else my_gcd(b, a % b)
  21.  
  22. print hex(int(- my_gcd(f1, f2).coefficients()[0] - 525689))[2:-1].decode('hex')# coefficient 0 = -m
  23. # CTF{6cd_0f_p0lyn0m14l5_15_7h3_n3w_c00l}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement