计算 F₂⁶⁰⁷ 中的离散对数
1. 多项式筛选与分解
在计算离散对数问题时,如果总共只允许两个大素数,使用更严格的第一个测试时效果更好;若允许三个或更多大素数,较宽松的第二个测试可能更合适。当多项式 D 通过测试,有可接受的概率为光滑多项式(除去余因子)后,就需要对 C 和 D 进行分解。
最初在处理较小的例子(如 F₂³¹³)时,通过显式试除法或预计算和查表来追踪小因子很有用。其思路是快速计算给定多项式关于某个不可约多项式的赋值。以关于 X + 1 的赋值为例:
- 注意到((X + 1)^{16} = X^{16} + 1)。由于实现中用每一位表示 F₂ 上多项式的一个系数,计算模(X^{16} + 1)的余数很快。
- 假设使用 32 位机器,这需要少于(\frac{deg P}{32} + 3)次操作(异或、一次移位和一次与运算)。
- 如果有一个预计算表,包含所有次数从 0 到 15 的多项式 Q 的赋值(ν(Q))(需要 32KB),就能大概率得到(ν_g(P))。因为(ν_g(P \mod X^{16} + 1) = ν_g(P)),除非(P \equiv 0 [X^{16} + 1])(此时有不等式(\leq))。
- 得到这个值后,只需用(X + 1)的适当(预计算)幂进行一次除法。若赋值至少为 16,则对余因子重复此操作。
从模分圆多项式的余数易于计算这一基本观察出发,可以将此方法扩展到次数至多为 4 的不可约多项式。但对于 n = 607 的情况,这种方法的改进并不显著,可能是因为 C 和 D 的平均次数使得小因子的贡献太小而无用。尝试用所有或部分可能出现在分解中的不可约多项式进行筛选来分解关系,也没有带来显著改进。
超级会员免费看
订阅专栏 解锁全文
15

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



