Bugku CTF---简单的RSA
·
一、题目信息:简单的rsa - Bugk CTF平台

二、解题步骤
1.点击题目附件下载,解压得到
字节码文件
2.打开在线Python pyc文件编译与反编译,上传pyc文件进行反编译,还原出源代码

3.从反编译后的代码中提取RSA参数:p,q,e,n,c
RSA解密公式:m=c^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) #m=c^e mod n,m为10进制格式
flag = long_to_bytes(m) #m的字符串形式
print(base64.b64decode(flag)) #上面得到的flag是base64编码,进行一次base64解码即可
4.运行脚本得到flag
flag{IlikeCTFbutCTFdon'tlikeme}
三、额外补充内容
依赖库:pycryptodome,gmpy2
安装命令:pip install pycryptodome gmpy2
四、RSA密码核心知识点
1. 密钥生成公式
- n=p\times q,p、q为两个大素数;
- 欧拉函数:\varphi(n)=(p-1)(q-1);
- 私钥 d 是公钥e在模\varphi(n)下的乘法逆元,满足 e\cdot d \equiv 1 \pmod{\varphi(n)}。
2. 加解密公式
- 加密:c=m^e \pmod{n}
- 解密:m=c^d \pmod{n}
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)