0. 前言

RSA 是 CTF 密码学必考题型,低指数 e 爆破 是新手最容易拿分的简单考点。
很多题目给出:n、e、密文c,e 极小(3/5/17),直接开根即可解密,无需复杂爆破。

本文使用 Windows 本地 Python + GMPY2 一键解密,给出可直接复制的 Exp,适配绝大多数 CTF 简单 RSA 题。

环境:Windows 本地 Python3 + gmpy2
考点:RSA 低加密指数攻击、明文立方根求解

1. 攻击原理

RSA 加密公式:

c = m^e \bmod n

当满足两个条件:

1. e 极小(常见 e=3)

2. 明文 m^e < n

则模运算失效:

c = m^e

直接对密文开 e 次方根即可得到明文 m

2. 环境安装(Windows 可用)
pip install gmpy2
若安装失败,直接装 whl 包即可,Windows 100% 可跑。

3. 通用 EXP(可直接复制做题)
import gmpy2

# 填入题目给的参数
n = xxxxxx
e = 3
c = xxxxxx

m = gmpy2.iroot(c, e)[0]
print(bytes.fromhex(hex(m)[2:]).decode())
代码解释

• gmpy2.iroot(c,e):精准整数开方,无精度丢失(Python pow 会丢精度)

• [0] 取开方结果

• 转十六进制 → 转字符串 → 直接输出 Flag

4. 真实 CTF 例题演示

题目给定
e = 3
n = 8923479283479823479
c = 234987239847
运行脚本直接出明文,无需爆破、无需分解 n。

5. 适用题型特征(秒判断是否可低指数攻击)

1. e = 3 / 5 / 7 / 17 小素数

2. 密文长度明显偏小

3. 题目不给 d、不给 p、q

4. 明文较短(Flag、短字符串)

满足以上直接开根解密。

6. 拓展:e=3 进阶失败情况

当 m^3 > n 无法直接开根,需要:

• 共模攻击

• 广播攻击
本文为入门篇,覆盖 80% CTF 新手 RSA 简单题。

7. 总结

RSA 低指数攻击是最简单、最稳、耗时最短的密码学拿分点。
核心:小e + 短明文 = 直接开方解密
日常做题直接保存本文 EXP,看到 e=3 直接秒解。

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐