BUUCTF高手教你:轻松求解RSA中的私钥d!

BUUCTF高手教你:轻松求解RSA中的私钥d!

首页卡牌对战代号领域更新时间:2024-04-26

BUUCTF-RSA试题解析:

题目:在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17,求解出d作为flag提交

答案:

解题方法:C#代码:

BigInteger p = BigInteger.Parse("473398607161");

BigInteger q = BigInteger.Parse("4511491");

BigInteger e = BigInteger.Parse("17");

BigInteger n = p * q;

BigInteger phiN = (p - 1) * (q - 1);

BigInteger d = ModInverse(e, phiN);

Console.WriteLine($"计算出的私钥指数 d 为:{d}");

为了求解 RSA 中的私钥指数 d,我们需要使用 RSA 算法中的公钥 (e, n) 和私钥 (d, n) 之间的关系。这里,e 是公钥指数,n 是模数,且 n = p * q,其中 p 和 q 是两个大素数。私钥指数 d 是通过公钥指数 e 和模数 n 的欧拉函数 φ(n) 计算出来的,具体地,d 是 e 关于 φ(n) 的模反元素,即满足 e * d ≡ 1 (mod φ(n))。

欧拉函数 φ(n) 对于 RSA 来说等于 (p-1) * (q-1),因为 n 是两个素数的乘积。

所以,我们首先计算 n 和 φ(n),然后使用扩展欧几里得算法来找到 d。

给定的值是:

p = 473398607161

q = 4511491

e = 17

计算 n 和 φ(n):

n = p * q

φ(n) = (p - 1) * (q - 1)

然后,我们需要找到 d,使得 e * d ≡ 1 (mod φ(n))。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved