RSA加密算法已知公钥对,求d

本文介绍了RSA非对称加密算法的密钥生成步骤,重点讨论了在已知n和e的情况下如何使用辗转相除法求解d。RSA的安全性依赖于大数因式分解的难度,如果能快速分解,其安全性将受到挑战。通过举例展示了如何利用辗转相除法求解d的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 非对称加密算法RSA密匙生成步骤

  1. 选择两个质数 p , q
  2. 计算 n , n = p*q
  3. 计算欧拉函数值 φ(pq) = (p-1)*(q-1)
  4. 选择整数 e ,要求满足 1 < e < φ(pq)
  5. 计算 d ,要求满足 ed ≡ 1 mod φ(pq) 也就是 ed mod φ(pq) = 1
  6. 保存密匙对

从以上6个步骤中我们可以看到,一共出现了6个“字母”,分别是:p , q , n , φ(pq) , e , d
最后生成的 公匙 为:( n , e ) , 私钥 为:( n , d )

2 已知n、e,如何求出d

要求 d ,就要先知道 φ(pq) ,就要知道 p 和 q ,意思就是6个字母都知道了。
那在知道n的情况下要求 p 和 q ,就要用到因式分解,所以说要是快速因式分解算法被找到了,那 RSA 算法的安全性就要大大降低了。这里扯远了,收。

在知道公钥,也就是 n 和 e 的情况下,求 d :

  1. 通过 n 推导出 p , q (因式分解)
  2. 通过 p , q 推导出 φ(pq)
  3. 通过 e*d ≡ 1 mod φ(pq) 求得 d

前两步都很好理解,那第三步按照正常的 ed = 1 + kφ(pq) 算的话可以会把人搞䨻。所有就有了辗转相除法在这边的运用。

3 用一个例子说明辗转相除法

还是拿经典的老题目了(课上和搜的博客都是这个,故称之为老!)
例:已知(e=17,n=3233),求另一个密钥。

  1. n=3233,自己算出 323
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值