RSA 常见攻击利用工具
大数分解 (Big Integer Factorization)

当N的两个素因子p, q相差较近或满足特定条件时,可尝试使用算法(如Fermat分解、Pollard's p-1)进行分解。

低加密指数攻击 (Small e Attack)

当加密指数e很小,导致 \(m^e < N\) 时,可以直接对密文c开e次方根得到明文m。需要用到 gmpy2.iroot 等高精度求根算法。

共模攻击 (Common Modulus Attack)

使用相同的模数N、不同的公钥指数 \(e_1, e_2\) 加密同一明文m。利用扩展欧几里得算法求解。前提:\(\gcd(e_1, e_2) = 1\)

私钥泄露攻击 (d Leakage Attack)

当私钥d已知时,可以直接通过公式 \(m = c^d \bmod N\) 解密。

维纳攻击 (Wiener's Attack)

当私钥d过小(满足 \(d < \frac{1}{3}N^{\frac{1}{4}}\))时,可通过对 \(\frac{e}{N}\) 进行连分数展开来求解d。

已知p, q求解 (Known p, q)

当p和q已知时,RSA问题退化为基础的加解密流程。此模块用于根据p, q, e, c计算d和m。

中国剩余定理利用 (CRT/Hastad 广播攻击)

当同一明文被用相同的小e、不同的模数N加密多次时,可以利用中国剩余定理恢复明文。输入多组 (c, N) 和 e。

dp 泄露攻击 (dp Leak Attack)

已知 dp = d \(\bmod (p-1)\) 时,可恢复私钥并解密密文。

e 与 φ(n) 不互素解密 (Non-coprime e Decryption)

\(e\)\(\varphi(n)\) 不互素时,解密可能有多个结果。输入 n, e, c, p, q。

N 计算工具

输入素数 pq,计算 N = p \times q

RSA公钥/私钥解析
RSA公私钥生成
RSA私钥格式转换
e为2ⁿ次方解密

当公钥指数e为2的幂次方时,可通过连续平方根计算恢复明文。需要安装sympy库。

Rabin算法解密

已知p、q、e=2和密文c,使用Rabin算法求解明文。

RSA公私钥对验证
RSA加密/解密(公钥加密,私钥解密)
自定义e, p, q加解密
素数判断 (Prime Number Check)

使用Miller-Rabin素性测试算法判断一个大整数是否为素数。该算法是概率性的,但对于足够多的测试轮数,错误概率极低。

轮数越多,结果越可靠,但计算时间也越长