参数化分割系统及其在离散对数问题中的应用
1. 向量集与映射
存在一组向量对应于 ${i : x_i = 1} \subset Z_n$。有两个相互为逆的映射表达了上述对应关系:
- $set : {0, 1, \ldots, 2^n -1} \to 2^{Z_n}$,$set(x = (x_0, \ldots, x_{n - 1})) = {i : x_i = 1}$
- $val : 2^{Z_n} \to {0, 1, \ldots, 2^n -1}$,$val(Y) = \sum_{i \in Y} 2^i$
考虑方程 $y = g^x = g^{x_1 + x_2}$,其中 $t = wt(x) = wt(x_1) + wt(x_2)$,$wt(x_1) = t_s$ 且 $set(x_1) \cap set(x_2) = \varnothing$。由此可得 $y g^{-x_1} = g^{x_2}$。
我们为所有 $x_1 \in Z_n$ 且 $wt(x_1) = t_s$ 计算 $y g^{-x_1}$,并构建一个查找表,包含所有对 $(y g^{-x_1}, x_1)$,支持对第一分量的高效搜索。然后为每个 $x_2$ 计算 $g^{x_2}$,直到找到碰撞。忽略对数因子,Heiman - Odlyzko 算法的时间复杂度为 $O\left(\binom{n}{t_s} + \binom{n}{t - t_s}\right)$,空间复杂度为 $O\left(\min\left{\binom{n}{t_s}, \binom{n}{t - t_s}\right}\right)$。
超级会员免费看
订阅专栏 解锁全文
1898

被折叠的 条评论
为什么被折叠?



