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