日常刷题1

文章讲述了在信息安全竞赛中,参与者如何使用Python工具处理UTCTF2020的OTP1挑战,通过解密16进制数并应用维纳攻击理论来解析RSA1问题。通过连分数方法,找到合适参数,最终揭示出明文flag.
摘要由CSDN通过智能技术生成

1

目录  1.[UTCTF2020]OTP1

2.[羊城杯 2020]RRRRRRRSA1


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}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值