利用素数重构分解RSA模数
1. 搜索树的增长
在分解RSA模数的过程中,为了便于通过穷举搜索找到正确的部分解,同时将存储所有解所需的空间控制在可行范围内,需要限制搜索树每一层的宽度。设第 $i$ 层树的宽度为 $W_i$,树的分支行为取决于素数随机位的已知情况,具体如下:
- 情况一:$p[i]$ 和 $q[i]$ 均未知
- 原本有4种组合 $(0, 0)$、$(0, 1)$、$(1, 0)$ 和 $(1, 1)$ 来得到 $(p_i, q_i)$,但根据方程 $(1)$ 以及已知的 $N$、$p_{i - 1}$、$q_{i - 1}$,$p[i]$ 和 $q[i]$ 存在线性依赖关系,选择数量限制为2种。
- 若 $(N - p_{i - 1}q_{i - 1})[i] = 0$,则 $p[i] + q[i] \equiv 0 (\bmod 2)$;若 $(N - p_{i - 1}q_{i - 1})[i] = 1$,则 $p[i] + q[i] \equiv 1 (\bmod 2)$。此时该层树的宽度是上一层的两倍,即 $W_i = 2W_{i - 1}$。
- 情况二:$p[i]$ 和 $q[i]$ 中恰好有一个已知
- 由方程 $(1)$ 可知,分支数量限制为2种。并且已知一个位的值就能确定另一个位的值。例如,若知道方程 $(1)$ 中的 $p[i]$ 以及 $N$、$p_{i - 1}$、$q_{i - 1}$,则 $q[i]$ 可确定。所以这种情况下 $p[i]$、$q[i]$ 的选择以及 $p_i$、$q_i$ 的分支数量减少为1个,树的宽度保持不变,即 $W_i = W_
超级会员免费看
订阅专栏 解锁全文
5

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



