nepnep战队的招新赛,题目出的很用心,师傅们也很可爱(nepnep打钱~);由于是个人赛,各个方向都会点的我最后卷到了rank5,这大概就是全沾菜鸟的优势吧(笑)。
记录一下密码方向赛题和比赛中没有做出的misc题目。
Crypto
signin
签到,费马分解n,crt求c,然后解。
1 | from gmpy2 import * |
中学数学
推导过程:
这里ph只是损失了低位,对p的影响非常小,可以近似为p计算,所以整体就看做一元二次方程计算了。
1 | from Crypto.Util.number import * |
COA_RSA
题目给了格规约方式,需要利用它的格构造方式去猜想e的形式,从而爆破求phi;出题人测试过,发现论文的攻击方式几乎无法成功,所以还是考虑爆破吧。
给的hint:
由于满足格规约条件,所以A是比较小的,即$A=m^{x-e}modn$比较小,猜想e的结构是这样的,其中k,a,b都不大:
因为这样的结构可以保证A运算以后为:
hash师傅提醒了下,这里需要保证k//a*phi是m的阶的倍数,所以尽量要满足k//a大于1;经查阅论文发现paper中的e确实是这个结构,所以直接进行爆破就好,有趣的是还可以用二分法求出k的值:
1 | from Crypto.Util.number import * |
P or S
pbox可以对应mod2矩阵,于是计算过程可以归纳为:
由于flag格式startwith flag
,足够32bit,所以可以用这一明密文对求出$P^6m$后边加的那一部分,再解出flag其余部分即可。
1 | Pbox=[ |
Misc
太忙了,摸了。