题目描述:
打开的 rsa_16m 文件 :
(在此我只想说神人才找得到 c 的位置) ,这位置是真的难找啊
题目分析:
- 首先打开 description.md 文件,得到:
翻译下来:
当您需要真正安全的通信时,您可以使用带有 4096 位密钥的 RSA。
我想要真正非常安全的通信来传输核发射代码(是的,物联网无处不在),所以我使用带有16777216位密钥的RSA。俄罗斯人肯定无法考虑这一点!
文件md5 : 1049a0c83a2e34760363b4ad9778753f
- 从所有以上的题目描述可以得知的已知条件有:n,c,e已知,且 n,c 特别大,e = 0x10001 = 65537
- 又
c = m^e mod n
所以当 m^e 严重小于 n 的时候,c 很可能就是 m^e,所以对 c 开 e 次方即可得到 m
- 以下是解题代码(将 rsa_16m 文件 和 代码文件 放在同一个文件夹中):
import gmpy2
from Crypto.Util.number import *
date = open("rsa_16m",'r').read().split('\n')
# e = 65537
m = gmpy2.iroot(int(date[1][4:],16),65537)[0]
print(long_to_bytes(m))
- 得到flag{(I)NSA_W0uld_bE_pr0uD}
收获与体会:
(在此我只想说神人才找得到 C 的位置)这位置是真的难找啊,找不到也许就放弃了- 若 n ,c 特别特别大,考虑以上方法(又了解了一种rsa题型)