BUUCTF-RE-rsa

一、

打开文件。可以看到下面两个文件,结合题目rsa。可知,pub.key里是rsa的公钥,flag.enc里面的是密文。

RSA加密解密的内容大概如下


公钥n = p * q,其中p和q是两个大素数

e是随机选择的数,作为公钥

d是跟e有关的一个数,满足条件式:ed=1(mod phi(n))

phi(n)是欧拉函数,phi(n)=(p-1)(q-1)

加密过程:设明文为m,密文为c

c = m^e(mod n)

解密过程:

m=c^d (mod n)

RSA密钥体制中,n和e作为公钥,是都可以得到的值;d作为私钥,是私人拥有的

要破解RSA,最常用的方法是大素数分解,即:找到p和q,使得n=p*q成立

         

解密的过程就是求  n  e  d

参考:带你彻底理解RSA算法

           RSA攻击

二、

有公钥之后我们第一步要做的就是,解析公钥  可以通过在线工具解析

 通过n算p、q

可以使用在线工具算素数factordb.com

p = 285960468890451637935629440372639283459

q = 304008741604601924494328155975272418463

写脚本前需要解决的问题

【windows下配置Python第三方库我一般在命令行使用easy_install.命令

     例如下载rsa,只需要在命令行下输入命令:easy_install rsa即可。】

参考VSCode 自动导入包插件 Auto Import安装gmpy2RSA-tool

脚本如下

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("D:\BaiduNetdiskDownload\BUUCTF\ras\output\flag.enc","rb+") as f:
    f=f.read()
flag=rsa.decrypt(f,key)
print(flag)

rsa解题脚本参考:https://blog.csdn.net/huanghelouzi/article/details/82974741

三、flag

flag{decrypt_256}

原文地址:https://www.cnblogs.com/Nickyl07/p/12670317.html