Bugku CTF---简单的RSA

发布时间:2026/6/25 20:43:35
Bugku CTF---简单的RSA 一、题目信息简单的rsa - Bugk CTF平台二、解题步骤1.点击题目附件下载解压得到字节码文件2.打开在线Python pyc文件编译与反编译上传pyc文件进行反编译还原出源代码3.从反编译后的代码中提取RSA参数p,q,e,n,cRSA解密公式mc^d mod n只需要求出私钥d就能解出明文接下来编写python脚本去解密from Crypto.Util.number import * import gmpy2 import base64 p int(0xED7FCFABD3C81C78E212323329DC1EE2BEB6945AB29AB51B9E3A2F9D8B0A22101E467,16) q int(0xAD85852F9964DA87880E48ADA5C4487480AA4023A4DE2C0321C170AD801C9,16) e 65537 n p * q c int(0x75AB3202DE3E103B03C680F2BEBBD1EA689C8BF260963FE347B3533B99FB391F0A358FFAE5160D6DCB9FCD75CD3E46B2FE3CFFE9FA2E9508702FD6E4CE43486631,16) phi (p-1)*(q-1) #求φ(n)φ(n)(p-1)(q-1) d gmpy2.invert(e,phi) #求e对于模n的逆元即解密指数d m pow(c,d,n) #mc^e mod nm为10进制格式 flag long_to_bytes(m) #m的字符串形式 print(base64.b64decode(flag)) #上面得到的flag是base64编码进行一次base64解码即可4.运行脚本得到flagflag{IlikeCTFbutCTFdontlikeme}三、额外补充内容依赖库pycryptodome,gmpy2安装命令pip install pycryptodome gmpy2四、RSA密码核心知识点1. 密钥生成公式- np\times qp、q为两个大素数- 欧拉函数\varphi(n)(p-1)(q-1)- 私钥 d 是公钥e在模\varphi(n)下的乘法逆元满足 e\cdot d \equiv 1 \pmod{\varphi(n)}。2. 加解密公式- 加密cm^e \pmod{n}- 解密mc^d \pmod{n}