周期序列线性复杂度的快速算法
1. 引言
在密码学领域,周期序列的线性复杂度是衡量序列不可预测性的重要指标。然而,传统的线性复杂度计算方法可能效率较低,因此寻找快速算法具有重要意义。
设 $s = {s_0, s_1, s_2, s_3, \cdots}$ 是定义在有限域 $GF(q)$ 上的序列。若存在正整数 $L$ 和 $c_1, c_2, \cdots, c_L \in GF(q)$,使得对于任意 $j \geq L$ 都有 $s_j + c_1s_{j - 1} + \cdots + c_Ls_{j - L} = 0$,则称 $s$ 为 $L$ 阶线性递归序列,其中最小的 $L$ 称为 $s$ 的线性复杂度,记为 $c(s)$。若存在正整数 $N$,使得对于 $i = 0, 1, 2, \cdots$ 都有 $s_i = s_{i + N}$,则称 $s$ 为周期序列,$N$ 为 $s$ 的一个周期。$s$ 的生成函数定义为 $s(x) = s_0 + s_1x + s_2x^2 + s_3x^3 + \cdots$。
对于周期序列 $s$,其第一个周期为 $s_N = {s_0, s_1, \cdots, s_{N - 1}}$,则有:
[
s(x) = \frac{s_N(x)}{1 - x^N} = \frac{s_N(x) / \gcd(s_N(x), 1 - x^N)}{(1 - x^N) / \gcd(s_N(x), 1 - x^N)} = \frac{g(x)}{f_s(x)}
]
其中,$f_s(x) = \frac{1 - x^N}{\gcd(s_N(x), 1 - x^N)}$,$g(x) = \frac{s_N
超级会员免费看
订阅专栏 解锁全文
1176

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



