自己的编程能力确实偏弱,趁着实训学学golang和算法。这是之前做的题。
ezStream
在普通LCG上变异,在获得nextnumber的时候进行移位操作。
1 | from gmpy2 import invert |
Mr.Doctor
看到别的师傅解法用了copper,我这里是直接解同余方程求seed。后边爆破hash时间复杂度太高,所以先把hash值求出来存在字典里再进行遍历9次计算。这是用空间换时间的做法。
1 | from Crypto.Util.number import * |
Bag
背包加密,这里做了一些变异,思路就是先用模运算求出真实的S序列,再用普通背包解密算法。
1 | from gmpy2 import invert |
ctfshowdsb-TooYoungRSA
春哥的题质量确实不戳。首先是求n的方法:
利用c2-c1,就能得到一个关于n的多项式。
同理再对不同的m做一次这样的操作,得到另一个多项式;然后gcd求出n。n比较小可分解为pq。
求e:
1 | G =GF(14129883229625683549) |
完整exp:
1 | from hashlib import * |