RSA初探——256-bit RSA破解

2018年6月24日 0 条评论 211 次阅读 1 人点赞

题目链接:http://www.shiyanbar.com/ctf/1772

0x01:使用openssl分析私钥,得到n,e的值

openssl rsa -pubin -text -modulus -in public.pem

openssl_public

Modulus的值就是n的值,Exponent的值就是e的值。

0x02:通过msieve来分解n值

msieve是一款很流行的大数分解工具

msieve153.exe 0xA41006DEFD378B7395B4E2EB1EC9BF56A61CD9C3B5A0A73528521EEB2FB817A7 -v

msieve

prp39显示的2个数字就是p,q值。

0x03:通过脚本,根据p,q,e值,生成私钥

import math
import sys
from Crypto.PublicKey import RSA
keypair = RSA.generate(1024)
keypair.p = 258631601377848992211685134376492365269
keypair.q = 286924040788547268861394901519826758027
keypair.e = 65537
keypair.n = keypair.p * keypair.q
Qn = long((keypair.p-1) * (keypair.q-1))
i = 1
while (True):
x = (Qn * i ) + 1
if (x % keypair.e == 0):
keypair.d = x / keypair.e
break
i += 1
private = open('private.pem','w')
private.write(keypair.exportKey())
private.close()

0x04:使用私钥进行解密

openssl rsautl -decrypt -in flag.enc -inkey private.pem -out flag.dec

打开生成的flag.dec,即可看到flag

注:生成私钥的脚本在使用的时候会需要一些python的模块,可以通过pip install 模块名安装。

梦呓233

时常抽风的半文艺半理工小青年

文章评论(0)