以后大型比赛中的难题更新到blog2.
easyRSA
直接记录一下官方wp就好,因为感觉这个解法没啥意义,就是小范围的搜索:
1 | #sage |
easySignin
队内师傅的思路,挺好的,避免用到二次剩余。首先通过逆推10次可以得到初始的a,b,c;然后把d放在mod p的多项式环下当作未知数,用init_g = d这一关系带入d,正向推10次建立环下的方程,解出d以后再用一次类似的解方程处理$t = (m+d)^2 %p$即可。
1 | from Crypto.Util.number import * |
LittleRSA
又是简单的二维造格…
令$t$为$t$模$N$的逆,则有$st=rN+1$,又$pt^2=kN^2+g$,两边同时乘$s^2$,得到$p(rN+1)^2=(kN^2+g)s^2$
两边同时展开,整理得到:$(pr^2-ks^2)N^2-s^2g=p(-1-2rN)$
可以构造格:$L=\left[\begin{matrix}g&N^2\1&0\end{matrix}\right]$,$(p(-1-2rN),-s^2)$是格上相对非常小的向量,于是用LLL解出即可得到$s^2$,通过$s$还原$p$分解n解rsa。
exp:
1 | # sagemath |