RSA算法中私钥指数d的计算方法咨询(附参数)
如何计算RSA私钥指数d
嘿,我来帮你理清这个RSA私钥指数d的计算逻辑——你之前对公式的理解跑偏啦!模运算里没有普通意义上的除法,咱们要找的是e在模φ(n)下的逆元,也就是满足 (e * d) ≡ 1 mod φ(n) 的整数d,这才是d的核心定义。
已知条件回顾
- p=31,q=23
- φ(n)=(p-1)(q-1)=3022=660
- 公钥指数e=223
- 目标:找到私钥指数d,使得
223*d ≡ 1 mod 660(已知结果是367)
计算方法:扩展欧几里得算法
求模逆元最标准的方法就是扩展欧几里得算法,它能在计算两个数最大公约数的同时,找到满足 a*x + b*y = gcd(a,b) 的整数x和y。因为e和φ(n)互质(gcd(223,660)=1),所以最终能得到 223*x + 660*y =1,这里的x就是我们要的d(如果x是负数,就加上φ(n)转成正整数)。
一步步推导过程
咱们用扩展欧几里得算法拆解计算:
660 = 2*223 + 214223 = 1*214 + 9214 = 23*9 + 79 = 1*7 + 27 = 3*2 + 12 = 2*1 + 0(此时gcd为1,停止)
接下来从最后一步回代,把1用223和660的线性组合表示:
1 = 7 - 3*2 # 把2替换成9-1*7 1 = 7 - 3*(9 - 1*7) = 4*7 - 3*9 # 把7替换成214-23*9 1 = 4*(214 - 23*9) - 3*9 = 4*214 - 95*9 # 把9替换成223-1*214 1 = 4*214 - 95*(223 - 1*214) = 99*214 - 95*223 # 把214替换成660-2*223 1 = 99*(660 - 2*223) - 95*223 = 99*660 - 293*223
从最后一行能看出:-293*223 ≡ 1 mod 660,但d需要是正整数,所以给-293加上660:660 - 293 = 367,这就是咱们要的d!
为啥你之前的公式不成立?
你提到的(1 mod φ(n))/e是错误的理解——模运算中没有普通除法,“除以e”的本质是乘以e的模逆元,也就是找到d使得e*d和1在模φ(n)下相等,这和普通算术里的除法完全不是一回事。
内容的提问来源于stack exchange,提问作者A. Szokalski
相关产品推荐
相关产品推荐

