crypto
我和小蓝鲨的秘密
嗯,自己算p和q,剩下的就交给gpt了
n可直接分解,就得到了p和q
1 | from gmpy2 import * |
得到解密后的图片
ChaCha20-Poly1305
这个题的难点是key是用base92加密的,我们遇到不会的加密先直接用随波逐流一把梭
然后将代码塞给gpt或者自己写
1 | from Crypto.Cipher import ChaCha20_Poly1305 |
蓝鲨的费马
https://www.bilibili.com/video/BV1Sh41177Rm/这讲了个类似的题
1 | 一 |
1 | from Crypto.Util.number import long_to_bytes |
以上我自己写的,大佬写的正式的在这https://blog.csdn.net/qq_42557115/article/details/143810738
小蓝鲨的数学题
离散对数求解问题
用sagemath运行
1 | m = 5321153468370294351697008906248782883193902636120413346203705810525086437271585682015110123362488732193020749380395419994982400888011862076022065339666193 |
小蓝鲨的密码
刚开始看到有张图片,而且压缩包还需要密码,因为是misc的图片题
结果解压密码就是图片名bluesharkinfo
我们解密后得到了一个字典
我们打开最开始的txt文档,发现是一个用aes加密的密文,而且刚好给了字典,那key肯定在字典里面
我们发现字典里有个isctf2024,那我们尝试一下
https://tool.oschina.net/encrypt/
小蓝鲨的方程
1 | from Cryptodome.Util.number import * |
求p和q
已知p1=p^4^+a ,p^4^≫a ,那我们对p^4^开四次方根,然后再往前找素数,即可解得p和q
1 | def crack(n, p1): |
当然,我们还能使用simpy内置方法prevprime() 用于得到给定数字n的前一个素数
求s
我们知道
1 | n=p*q**4 |
所以我们套欧拉函数
φ(n)=φ(p*q^4^)=φ(p)∗φ(q^4^)=(p−1)∗(q^4^−q^3^)
然后正常求rsa就能得到s
1 | phi = (p-1)*(q**4 - q**3) |
求m
参考DLP (158/Crypto) · Hackademia Writeups
一开始先不考虑模数,根据二项式定理,我们有一般式:
(n+1)^m^=n^m^+m∗n^m^−1+…+m∗n+1
在本题中n=s^3^,此时,我们对这个式子模n^2^,会发现除了最后两项,其他项都被模掉了,所以
(n+1)^m^ mod n^2^=m∗n+1 mod n^2^
这样我们就求出了m=((c%n2)−1 )/n
exp
1 | from Cryptodome.Util.number import * |