RivestShamirAdleman
50
eの値が小さい場合は暗号文のe乗根をとれば平文を得られる。こちらのサイトを参考にします。
import gmpydef root_e(c, e, n):bound = gmpy.root(n, e)[0]m = gmpy.root(c, e)[0]return m, boundn = 22272129080562722886614022632205442705494455272860112814093083500097723366897651161029102178806468364810560145326674298943748926312059319333104024877629414355081997511170571841726554870330438449136414942769879449909945280622679982416961505259605748700527626064176345428348075666618966413358066674766244602120334405919054045097465042177827566762056612497539403392371174259602854649957161582616110665358774209954483243807893225011511670025850800717182535575577848500527430246259134071980979951803599863210705004134764027126983838884518704239682964897619030091789047630556807645411417077149617559860988186649846538955623e = 3c = 56274920108122478990888092521371739605513959053322262229138771723654033167756128122086229722406180593128664696512912311575327724724695863345048713415525599333m, bound = root_e(c, e, n)h = hex(m)[2:]flag = ''for i in range(0, len(h), 2):flag += chr(int(h[i:i+2], 16))print(flag)
実行するとフラグが出力されます。
フラグは、
フラグは、
flag{nO_paDDing00_rsa}