只会两题比较简单的:(
Crypto/🎓 BabyRC4
RC4属于对称加密算法,RC4算法的关键是根据明文和密钥生成相应的密钥流,密钥流的长度和明文的长度是对应的,也就是说明文的长度是500字节,那么密钥流也是500字节。当然,加密生成的密文也是500字节,因为密文第i字节=明文第i字节^密钥流第i字节,同时密钥的长度keylen 与明文长度、密钥流的长度没有必然关系.RC4的加解密都是靠异或实现的题目中c0与c1的密钥应该相同,但是因为c0的明文长度更短,因为密钥流的长度与明文相同,所以用c0的明文与密文异或产生的密钥流无法完全解出c1但是幸运的是所缺省的部分是已知的。刚开始做的时候得出的是b’}5382efac:s5ss5y3k_4Cr_35Uer_rEv3n{E\x99_’这么一串比特串,原因是没意识到[::-1]的作用是对列表进行翻转,加上后就可以得到b’_\x99E{n3vEr_reU53_rC4_k3y5ss5s:cafe2835}’,补齐未加密部分即可。
1 | from pwn import * |
1 | flag:SEE{n3vEr_reU53_rC4_k3y5ss5s:cafe2835} |
Crypto/🎓 OpenEndedRSA [NEW]
p是一个512字节的素数,还是很小的,在https://www.alpertron.com.ar/ECM.HTM中可以直接把s分解,得到pp=2,p = 11336109240426199545380121772211758030643077084354723510396623108046045877936239312932896062461038721613541632921592699626408876519614365179680368296156007
但是做这题时发现一个很无语的东西是在math库里也有pow()这个函数,并且只有两个参数,所以如果引用了math库里的pow()就会和内置的pow冲突,就会报错。
所以wp为:
1 | import gmpy2 |
1 | flag:SEE{0dd_3vEN:deadbeef} |