Curve
题目代码
1 | #sage |
题目实现了一个Twisted Edwards曲线的加法/乘法运算脚本。
方程可由assert语句推出: \(ax^2+y^2\equiv dx^2y^2+1 (mod p)\).
椭圆曲线具有多种表示形式,可以将Twisted
Edwards的方程作变量代换,变为熟悉的Weierstrass方程,对其求系数后构建EllipticCurve,
利用Sagemath求其阶后,遵循阿贝尔群的加法法则,乘以e在其阶下的模逆即可。
exp
1 | #sage |
Flag:D0g3xGC{SOlvE_The_Edcurv3}
Ez_sign
题目代码
1 | from Crypto.Util.number import * |
本题分为两部分,第一部分将含有e的信息作为DSA的私钥进行加密,涉及基于蛇皮随机数复用的数学分析
第二部分将p,q的值放进了一个平方和问题
先看第一部分,本来想直接上手写草稿图的
\(k_1 \equiv H_1s_1^{-1}+r_1s_1^{-1}x (mod
q)\) \(k_1^2 \equiv
H_2s_2^{-1}+r_2s_2^{-1}x (mod q)\)
记 \(r_is_i = A_i\),\(H_iS_i = B_i\)
整理后可以得到 \(A_1x^2 + (2A_1B_1 - A_2)x +
(B_1^2-B_2) \equiv 0 (mod q)\)
利用sage解该同余式方程即可。
第二部分平方和的divisors解法参考了asksage上的一行代码,非常简明精炼。
exp
1 | from Crypto.Util.number import * |
不得不说"sage magic"还是挺好用的(毕竟免去了手搓/import乱七八糟东西的麻烦)
flag: D0g3xGC{EZ_DSA_@nd_C0mplex_QAQ}
EzRSA
题目代码
1 | from secret import flag |
就是一个Schmidt-Samoa密码系统,起名叫EzRSA还是有些喧宾夺主的感觉
简单的数论,一把梭。
由欧拉定理可得:\(a^{(p-1)(q-1)} \equiv 1 (mod pq)\)
又有 \(Nd \equiv 1 (mod (p-1)(q-1))\)
故存在 \(a^{Nd} \equiv a^{1+k(p-1)(q-1)} \equiv a (mod pq)\)
故求解 \(gcd(a^{Nd},N)\) 即有极大概率得到pq,此处a可取任意的较小数(如2)
最后执行解密过程即可: \(m \equiv c^{d} (mod pq)\)
exp
1 | from Crypto.Util.number import * |
flag: D0g3xGC{W1sh_Y0u_Go0d_L@ucK-111}