[办公自动化]我和DeepSeek的对话3,学习RSA
我的问题:
请你帮忙再讲讲RSA的基本原理,用通俗的语言。
之前还问了一道GHCTF2025新生赛的题目:
from Crypto.Util.number import getPrime, bytes_to_long
p=getPrime(128)
q=getPrime(128)
n=p*q
phi=(p-1)*(q-1)
flag="NSSCTF{xxxxxx}"
print("p=",p)
print("q=",q)
m=bytes_to_long(flag.encode())
e=4
c=pow(m,e,n)
print("c=",c)
print("n=",n)
'''
p= 182756071972245688517047475576147877841
q= 305364532854935080710443995362714630091
c= 14745090428909283741632702934793176175157287000845660394920203837824364163635
n= 55807222544207698804941555841826949089076269327839468775219849408812970713531
'''
Deepseek答案:
RSA 加密可以想象成一种特殊的“数学锁”:你造一把锁(公钥),所有人都能用它来锁住信息,但只有你拿着钥匙(私钥)才能解开。它的核心是三个步骤:
1. 造锁(生成密钥)
- 
选两个大质数:比如 p=3p=3,q=11q=11(实际中这两个数极大,比如几百位)。 
- 
计算锁的“齿数”:n=p×q=3×11=33n=p×q=3×11=33(这就是公钥的一部分)。 
- 
计算“隐藏的齿轮”:ϕ(n)=(p−1)(q−1)=2×10=20ϕ(n)=(p−1)(q−1)=2×10=20(这是私钥的关键)。 
- 
选一个“公开的开关”:比如 e=3e=3(要满足 ee 和 ϕ(n)=20ϕ(n)=20 互质,即没有公因数)。 
- 
生成“钥匙”:找一个数 dd,使得 e×d≡1mod ϕ(n)e×d≡1modϕ(n)。这里 d=7d=7,因为 3×7=21≡1mod 203×7=21≡1mod20。 
公钥是锁:(n=33,e=3)(n=33,e=3);私钥是钥匙:d=7d=7。
2. 上锁(加密)
假设你想加密数字 m=7m=7:
- 
用公钥加密:计算 c=memod n=73mod 33=343mod 33=13c=memodn=73mod33=343mod33=13。 
- 
加密后的密文是 c=13c=13。 
3. 开锁(解密)
用私钥 d=7d=7 解密密文 c=13c=13:
- 
用钥匙解密:计算 m=cdmod n=137mod 33m=cdmodn=137mod33。 
- 
直接计算 137137 会很大,但可以用模运算简化: - 
132=169mod 33=4132=169mod33=4 
- 
134=42=16mod 33134=42=16mod33 
- 
137=134×132×13=16×4×13=832mod 33=7137=134×132×13=16×4×13=832mod33=7。 
 
- 
- 
解密得到原文 m=7m=7。 
为什么 RSA 安全?
- 
锁(公钥)是公开的:所有人都知道 n=33n=33 和 e=3e=3。 
- 
钥匙(私钥)藏在质数里:如果攻击者想从 n=33n=33 反推出 p=3p=3 和 q=11q=11,需要做质因数分解。当 nn 是一个几百位的数时,分解它需要超级计算机算几百年。 
特殊情况(比如你的题目中的 e=4e=4)
通常 ee 必须和 ϕ(n)ϕ(n) 互质,才能保证存在解密的 dd。但如果 ee 和 ϕ(n)ϕ(n) 不互质(比如你的题目中 e=4e=4,而 ϕ(n)ϕ(n) 可能被 4 整除),这时无法直接计算 dd。需要“暴力拆锁”:
- 
分解 nn 得到 pp 和 qq(题目已给出)。 
- 
分别在模 pp 和模 qq 下解方程: - 
解 m4≡cmod pm4≡cmodp 
- 
解 m4≡cmod qm4≡cmodq 
 
- 
- 
用中国剩余定理(CRT)组合所有可能的解,再筛选出有意义的明文(比如以 NSSCTF{开头)。
通俗总结
RSA 就像用两个大质数造了一把数学锁,加密是“用公开的开关把信息锁住”,解密是“用隐藏的钥匙解开”。如果钥匙的设计有问题(比如 ee 选得不好),就需要拆开锁的内部结构(分解 nn),在更小的锁芯(模 pp 和 qq)里逐个破解,最后拼出完整的钥匙。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号