DASCTF 2026
three_friends
题目
1 | from Crypto.Util.number import * |
思路
对n1,n2,n3两两求公因数可以得到p、q、r,分别计算出φ后再解出d即可
解答
1 | from Crypto.Util.number import * |
lattice_oracle
题目
1 | from Crypto.Cipher import AES |
思路
观察题目:
$$b_i=a_i*s_i+e_i \qquad 其中a_i \in [0,q-1],e_i \in [-1,1] $$
那么:
$$s_i=(b_i-e_i)*a_i^{-1}$$
对于e_i枚举一下即可
但是呢,这个s_i只有4个取值,所以直接爆破s要快些方便些
解答
1 | from Crypto.Cipher import AES |
phantom_sign
题目
1 | import os, hashlib, json |
思路
已知40组:$$s_i \equiv \frac{h_i+d*r_i}{k_i} \pmod n \qquad 其中k_i是较小的,目标求d$$
$$\Rightarrow k_i\equiv \frac{h_i}{s_i}+\frac{r_i}{s_i}d \pmod n \Rightarrow k_i=\frac{h_i}{s_i}+\frac{r_i}{s_i}d-\lambda_i n$$
$$k_i
$$\begin {pmatrix} -\lambda_1,-\lambda_2,…,-\lambda_{40},d,1 \end {pmatrix} * \begin {pmatrix} An & 0 & \cdots & 0 & 0 & 0 \ 0 & An & \cdots & 0 & 0 & 0 \ \vdots & \vdots & \ddots & \vdots & \vdots & \vdots \ 0 & 0 & \cdots & An & 0 & 0 \ AR_1 & AR_2 & \cdots & AR_{40} & 1 & 0 \ AH_1 & AH_2 & \cdots & AH_{40} & 0 & AK \end {pmatrix} = \begin {pmatrix} Ak_1,Ak_2,…,Ak_{40},d,AK \end {pmatrix}$$
$$其中A=2^8$$
$$但是这样似乎算不出来,这里k_i\in [0,K),为了使向量更短可以考虑构造偏移:$$
$$\begin {pmatrix} -\lambda_1,-\lambda_2,…,-\lambda_{40},d,1 \end {pmatrix} * \begin {pmatrix} An & 0 & \cdots & 0 & 0 & 0 \ 0 & An & \cdots & 0 & 0 & 0 \ \vdots & \vdots & \ddots & \vdots & \vdots & \vdots \ 0 & 0 & \cdots & An & 0 & 0 \ AR_1 & AR_2 & \cdots & AR_{40} & 1 & 0 \ A(H_1-\frac{K}{2}) & A(H_2-\frac{K}{2}) & \cdots & A(H_{40}-\frac{K}{2}) & 0 & AK \end {pmatrix} = \begin {pmatrix} A(k_1-\frac{K}{2}),A(k_2-\frac{K}{2}),…,A(k_{40}-\frac{K}{2}),d,AK \end {pmatrix}$$
$$这样A(k_i-\frac{K}{2})\in [-\frac{K}{2},\frac{K}{2}]$$
解答
1 | import os, hashlib, json |