RSA_实验吧

http://www.shiyanbar.com/ctf/1772

RSA:

RSA破解
解题链接: http://ctf5.shiyanbar.com/crypto/RSA
解:
先打开OpenSSl.exe

RSA_实验吧_第1张图片

1、openssl分析私钥,执行rsa -pubin -text -modulus -in public.pem命令,注意public.pem文件和OpenSSL.exe在同一个目录下

得到n, e值。exponent就是e值,modulus是n模数的值。

RSA_实验吧_第2张图片

Exponent: 65537 (0x10001)
Modulus=A41006DEFD378B7395B4E2EB1EC9BF56A61CD9C3B5A0A73528521EEB2FB817A7

2、通过msieve来分解n值:

https://sourceforge.net/projects/msieve/?source=recommended

分解了老半天3min,进入gnfs目录下输入一下命令就可以分解

msieve.exe 0xA41006************************EB2FB817A7 -v

初学在探索中

-v        verbose: write log information to screen
          as well as to logfile冗长:意思打印具体分解的情况

-q  -q        quiet: do not generate any log information,
           only print any factors found仅仅打印能找到的因子

--------------------------------------------------------------------------------------------------------------------------------------

E:\gnfs>msieve.exe 0xA41006DEFD378B7395B4E2EB1EC9BF56A61CD9C3B5A0A73528521EEB2FB817A7 -q


0xA41006DEFD378B7395B4E2EB1EC9BF56A61CD9C3B5A0A73528521EEB2FB817A7
prp39: 258631601377848992211685134376492365269
prp39: 286924040788547268861394901519826758027

-------------------------------------------------------------------------------------------------------------

 RSA_实验吧_第3张图片

prq39就是p,q可以的。

3.通过脚本,根据p,q,e值,生成私钥private.pem,该脚本只能在Linux或者cygwin的python下运行,本人在windows下试过

不过总是提示importerror :from Crypto.PublicKey import RSA这句话始终通过不了,最后只能安装了cygwin,其中在我博客中有安装过程,

之前windows中的python用起来麻烦,要在cgywin中安装python(博客中有)。关于怎么运行相应的.py文件,需要切换到对应的目录下。

RSA_实验吧_第4张图片

#!/usr/bin/python
# coding=utf-8 
#通过脚本,根据p,q,e值,生成私钥,貌似该脚本只能在Linux或者cygwin的python下运行。
#我就在windows试试不行,装不了能力有限,试过pip install pycrypto
#果断用Linux吧
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()

4、使用密钥进行解密
OpenSSL> rsautl -decrypt -in flag.enc -inkey private.pem

RSA_实验吧_第5张图片

你可能感兴趣的:(openssl)