题目还是有点东西的,只记录解比较少的。
week1
chaos
纸老虎,一般代码越复杂,逻辑越简单(论文题除外)。
1 | def LC(key, x, times, flags): |
week2
ezPRNG
1 | # 无模数lcg |
ezRabin
1 | import gmpy2 |
week3
keyExchange
1 | from hashlib import * |
Prof. Shamir’s Secret
1 | # modp下的拉格朗日插值 sagemath |
One Time Pad
MTP而已。首先利用出题人给的kasiski_test计算key的长度,然后参考这位爷的博客,按照MTP的攻击方式改一下脚本即可:
1 | from libnum import * |
AES?
AES解密,然后拿去恢复mt19937,要用MT19937Predictor这个轮子,randcrack需要32bit伪随机数,不太好分割。
1 | from Crypto.Cipher import AES |
week4
LCG Revenge
三阶而已,类似普通lcg逆推十次:
1 | from Crypto.Util.number import * |
代数关系
理论上,用$k\cdot phi$求逆解rsa结果也是一样的,故只要得到$phi$的倍数即可。
1 | from Crypto.Util.number import * |
week4
An der schönen Elliptische Kurve
简单ecdh
1 | from Crypto.Cipher import AES |
flip-flop
简单的字节翻转,因为iv可控所以可操作。
1 | import binascii |