快速入门crypto-RSA 核心笔记
快速入门crypto-RSA 核心笔记
一、加解密核心公式
1. 密钥生成
- 选两个大质数
p和q - 计算模数
n = p * q - 计算欧拉函数
φ(n) = (p-1) * (q-1) - 选公钥
e,满足1 < e < φ(n)且e和φ(n)互质(最大公约数为 1) - 求私钥
d,满足(e * d) mod φ(n) = 1→d是e在模φ(n)下的逆元
2. 加密
明文 m → 密文 c
1 | c = m^e mod n |
3. 解密
密文 c → 明文 m
1 | m = c^d mod n |
二、常见攻击方式(大白话)
1. 模数可分解攻击(最基础)
适用场景:拿到公钥
(e, n)和密文c,且能把n拆成p*q攻击原理
:
- 分解
n = p*q(CTF 里常用工具:yafu、factordb 网站) - 算
φ(n) = (p-1)*(q-1) - 求
e的逆元d→ 用d解密c得m
- 分解
关键条件:
n能被成功分解(如果p和q太小,分解很容易)
2. 共模攻击(同一 n 漏洞)
适用场景:同一明文
m,用同一个n、不同公钥e1/e2加密,得到密文c1/c2攻击原理
:
- 只要
e1和e2互质,就存在整数x和y,满足e1*x + e2*y = 1 - 明文
m = (c1^x * c2^y) mod n - 遇到负数次幂 → 转成模逆(比如
c1^-k = (c1^k 的逆元) mod n)
- 只要
关键条件:多个公钥共用同一个
n,且公钥之间互质
补充:CTF 里其他常见攻击(拓展)
- 低加密指数攻击(e 太小,比如 e=3)
- 场景:
e很小,密文c = m^3 mod n - 原理:直接对
c开立方,结果就是m(不用分解n)
- 场景:
- 私钥泄露攻击
- 场景:不小心泄露了私钥
d - 原理:拿到
d就能直接解密任意用(e,n)加密的密文
- 场景:不小心泄露了私钥
三、核心总结
| 操作 | 公式 | 关键条件 |
|---|---|---|
| 加密 | c = m^e mod n |
知道公钥 (e,n) |
| 解密 | m = c^d mod n |
知道私钥 d |
| 模数分解攻击 | 分解 n=p*q → 求 d |
n 可被分解 |
| 共模攻击 | m=(c1^x*c2^y)mod n |
同 n、多 e、e1/e2 互质 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 24kmagic!
评论

