这次和队友一起拿了个贴纸:p
里面EZ_sign学到DSA(赛后才知道),自己手推了一下公式求的e,下一块的解平方和卡住了,因为是4k+2类型的,有时间复盘一下学习。
密码,misc,re附件链接: https://pan.baidu.com/s/1h6g93s58p4yiD7qSxHXNzg?pwd=2q61 提取码: 2q61
官方WP:https://kdocs.cn/l/cetcIAL8hM4F
babyRSA
题目
1 | from secret import flag |
解析
看到$n=p\cdot p\cdot q$以及给了d
那么就是
变种RSA——SchmidtSamoa
原理
从加密开始
而
那么
即我们解密的模数只能是$p\cdot q$
因为解密依靠拓展欧拉函数,$a^{\phi n}\equiv 1 \pmod n$
$c^{e\cdot d} \equiv c^{(p-1)\cdot (q-1)}\cdot c\equiv c \pmod {p\cdot q}$
结合这篇看:RSA的数学背景 | saga131密之作坊
此时我们只知道n和d,$n=p\cdot p\cdot q$ ,要怎么知道$p\cdot q$呢?
别忘了e = n,我们还知道e和d,那么就可以用这两个来求$p\cdot q$
也是用到拓展欧拉函数
取一个整数a(a!=1&&a>1)
有(e=n)
我们还有$n=p\cdot p\cdot q$
求n与$a^{n\cdot d} - a$ 的最大公因数就可以得到$p\cdot q$
然后解密就行。
套脚本
1 | from gmpy2 import * |
flag
1 | D0g3xGC{W1sh_Y0u_Go0d_L@ucK-111} |
Curve
还没学ecc,只好在github上找一下有无相似的题目
搜索关键代码块
1 | (a*gx^2+gy^2)%p==(1+d*gx^2*gy^2)%p |
下载下来然后阅读
有类似的题目
套脚本
1 | # sagemath |
flag
1 | D0g3xGC{SOlvE_The_Edcurv3} |
EZ_sign
先附几张手推图片
关于DSA解e部分
1 | # sagemath |
后面解平方和,在用sagemath的 two_squares()求出两个合数(而p和q是素数)之后,我认为是解出了这个方程的其中一个解,而这个解明显不是我们想要的那个。
C是4k+2类型的数,网上说4k+1才有唯一解,具体看费马平方和定理
我翻了挺多文章的,找到了这个网址Integer factorization calculator (alpertron.com.ar) 不知道怎么用,也想到了用复数来分解,就是不知道怎么来求
1 | C = p**2+q**2 = (p+q*i)*(p-q*i) |
关于平方和分解
1 | # sagemath |
完整代码
1 | # sagemath |
flag
1 | D0g3xGC{EZ_DSA_@nd_C0mplex_QAQ} |