Crypto_BUUCTF_WriteUp | RSA
题目(原题的拼写错误)
在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17
求解出d作为flga提交
分析
回顾一下 RSA 算法描述:
RSA 算法的具体描述如下:
(1)任意选取两个不同的大素数 p 和 q 计算乘积;
(2)任意选取一个大整数 e,满足,整数 e 用做加密钥(注意:e 的选取是很容易的,例如,所有大于 p 和 q 的素数都可用);
(3)确定的解密钥 d,满足,即 是一个任意的整数;所以,若知道 e 和 ,则很容易计算出 d;
(4)公开整数 n 和 e,秘密保存 d;
(5)将明文 m(m<n 是一个整数)加密成密文 c,加密算法为(6)将密文 c 解密为明文 m,解密算法为
然而只根据 n 和 e(注意:不是 p 和 q)要计算出 d 是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道 d)才可对密文解密。
根据描述编写解密代码:
long long p = 473398607161; long long q = 4511491; int e = 17; long long d = -1; long long varphi = (p - 1) * (q - 1); // de = kφ(n) + 1 int k = 1; while (1) { if ((k * varphi + 1) % e == 0) { printf("%lld", (k * varphi + 1) / e); break; } } return 0;
得到 flag 内容,套壳提交。
Flag
flag{125631357777427553}
参考
本文作者:Guanz
本文链接:https://www.cnblogs.com/Guanz/p/17813414.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
标签:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步