1
目录 1.[UTCTF2020]OTP1
1.[UTCTF2020]OTP1
打开文件是一堆16进制的数,开始还没头绪放python里用long_to_bytes解一下就得到了flag。。。
2.[羊城杯 2020]RRRRRRRSA1
一共两个文件打开以后e很大,推测是维纳攻击
ed=k*φ(n)+1,可化为e/φ(n)=k/d+1/φ(n),即e/φ(n)-k/d=1/φ(n),φ(n)特别大,所以φ(n)≈n
原式可化为e/n-k/d=1/φ(n) ,因为φ(n)特别大,1/φ(n)就特别小,也就说明e/n-k/d非常接近。
将e/n拆分为连分数形式,举个例子:
43/19就可以写为[2,3,1,4],对43/19进行拆分得到的某一个分母就可能是d的值
但是应当e>n,这道题并没有满足,这里也是参考了大佬的wp才能解出来,然而n1/n2=(p1/p2)**2*q1/q2,p2>p1 所以(p1/p2)<1 q1/q2同理
所以得到(n1/n2)<(q1/q2),因此q1/q2在(n1/n2,1)之间,对n1/n2展开求各项渐近分数,就可以求得q2,之后的一堆数就都可以解了。
将两段明文连起来就是flag{3aadab41754799f978669d53e64a3aca}