BUUCTF_rsa
作者:互联网
BUUCTF_RSA
首先,一向怕数学,畏难情绪严重的我之前意识到自己这个致命的缺点,所以下定决心,以后无论遇到多么难的问题,绝不能认怂,大不了多用点时间,一定不能怕,要勇敢,要能沉得住气!
RSA原理解析与数学推导(前两个已经get到了)
前置知识:
1.数论的基本概念:剩余系,缩系,费马小定理,费马-欧拉定理
2.RSA推导过程
3.判断素数的方法
4.分解质因数的方法:Pollard算法
解题:
参考了大牛博客(很多CTF逆向题他都写过博客,这里说一下,博客园感觉比CSDN好多了,可简可丽)
1.打开pub.key文件(我的系统是Ubuntu,可以直接打开)
-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAMAzLFxkrkcYL2wch21CM2kQVFpY9+7+
/AvKr1rzQczdAgMBAAE=
-----END PUBLIC KEY-----
发现公钥,于是我就开始去了解相关知识,然后要知道从公钥中获取信息:
在这个优质解密网站中得到相关信息
key长度: 1024
模数(n): A1E4D93618B8B240530853E87738403851E15BBB77421F9B2377FB0B4F1C6FC235EAEC92EA25BB76AC221DCE90173A2E232FE1511909C76B15251D4059B288E709C1EF86BCF692757AAD736882DD1E98BEDFED9311A3C22C40657C9A52880BDC4B9E539041D44D52CB26AD13AB086F7DC294D144D6633A62EF91CA1775EB9A09
指数(e): 65537 (0x10001)
2.然后分解质因数:
p= 285960468890451637935629440372639283459
q=304008741604601924494328155975272418463
3.脚本:
import gmpy2
import rsa
e = 65537
n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463
phin = (q-1)*(p-1)
d = gmpy2.invert(e, phin)
key = rsa.PrivateKey(n, e, int(d), p, q)
with open("pathof.enc", "rb+") as f: #pathofenc 是文件路径
f = f.read()
print(rsa.decrypt(f, key))
附:
1.安装安装gmpy2(gmpy2的安装很麻烦,不同人遇到的情况可能不同,特别是对一些内层原理不清楚的,只能按照教程,但很多教程不是都行,所以我们可以共同探讨)
2.ftp文件传输的使用
3.使用OpenSSL加解密
标签:BUUCTF,gmpy2,rsa,RSA,-----,key,import 来源: https://www.cnblogs.com/DarrenLU/p/15067342.html