[办公自动化]我和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)=(p1)(q1)=2×10=20(这是私钥的关键)。

  • 选一个“公开的开关”:比如 e=3e=3(要满足 ee 和 ϕ(n)=20ϕ(n)=20 互质,即没有公因数)。

  • 生成“钥匙”:找一个数 dd,使得 e×d≡1mod  ϕ(n)e×d1modϕ(n)。这里 d=7d=7,因为 3×7=21≡1mod  203×7=211mod20。

公钥是锁(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。需要“暴力拆锁”:

  1. 分解 nn 得到 pp 和 qq(题目已给出)

  2. 分别在模 pp 和模 qq 下解方程

    • 解 m4≡cmod  pm4cmodp

    • 解 m4≡cmod  qm4cmodq

  3. 用中国剩余定理(CRT)组合所有可能的解,再筛选出有意义的明文(比如以 NSSCTF{ 开头)。


通俗总结

RSA 就像用两个大质数造了一把数学锁,加密是“用公开的开关把信息锁住”,解密是“用隐藏的钥匙解开”。如果钥匙的设计有问题(比如 ee 选得不好),就需要拆开锁的内部结构(分解 nn),在更小的锁芯(模 pp 和 qq)里逐个破解,最后拼出完整的钥匙。

posted @ 2025-03-07 20:09  viphhs  阅读(26)  评论(0)    收藏  举报