(C11 - GCC8.1.0)
基本属性: 信息机密性, 信息真实性, 数据完整性, 行为不可否认性.
体制: $(M,C,K_1,K_2,E,D)$ 明文空间, 密文空间, 加密密钥空间, 解密密钥空间, 加密空间, 解密空间; 加密变换 $c=E_{k_1}(m)$, 解密变换 $m=D_{k_2}(c)$.
类别: 对称加密, 非对称加密, Hash函数, 密码协议.
分析: 唯密文攻击, 已知明文攻击, 选择明文攻击, 选择密文攻击, 自适应选择明文攻击, 选择密钥攻击.
评价: 无条件安全 $P(M|C)=P(M)$; 可证明安全(破解本质为数学难题); 计算安全(破解代价超过信息价值;破解时间超过信息时效).
攻击: 被动攻击(监听-信息机密性); 主动攻击(伪造-信息真实性,篡改-数据完整性,否认-行为不可否认性).
数学基础
整除
性质: $c|a$, $c|b \Longrightarrow$ $c|ax+by$, $\forall x,y\in\mathbb{Z}$.
最大公因数: ${\rm gcd}(a,b)=\inf_{\geq 0}\{sa+tb|s,t\in\mathbb{Z}\}$.
辗转相除求${\rm gcd}$:
$$\begin{align}
&a=q_1b+r_1\\
&b=q_2r_1+r_2\\
&…\\
&r_{n-2}=q_nr_{n-1}+r_n
\end{align}$$
当 $r_n=0$ 时, 有 $r_{n-1}={\rm gcd}(a,b)$.
对序列中被除数与除数从$1$开始编号, 进而有递归:
$$\begin{align}
&a_i=(a_i/b_i)b_i+(a_i\%b_i)\\
&a_i=b_{i-1}\\
&b_i=a_{i-1}\%b_{i-1}
\end{align}$$
并约定 ${\rm gcd}(a,0)=a$.
1
2
3
int gcd(int a, int b){
return b==0? a : gcd(b,a%b);
}
Bezout定理: 给定 $a,b\in\mathbb{Z}$, Diophantine方程 $ax+by=m$ 有解 $\Longleftrightarrow$ ${\rm gcd}(a,b)|m$.
可仅考查 $m={\rm gcd}(a,b)$, 不然, 结果只需乘相应倍数.
在递归中, 显然有 ${\rm gcd}(a,b)={\rm gcd}(a_i,b_i)$, 即 $\exists x_i,y_i\in\mathbb{Z}$ s.t. $a_ix_i+b_iy_i=m$.
$$\begin{align}
m&=a_ix_i+b_iy_i\\
&=b_{i-1}x_i+(a_{i-1}\%b_{i-1})y_i\\
&=b_{i-1}x_i+[a_{i-1}-(a_{i-1}/b_{i-1})b_{i-1}]y_i\\
&=y_ia_{i-1}+[x_i-(a_{i-1}/b_{i-1})y_i]b_{i-1}\\
&=x_{i-1}a_{i-1}+y_{i-1}b_{i-1}
\end{align}$$
1
2
3
4
5
6
7
8
9
10
11
12
13
int extEuclid(int a, int b, int* x, int* y){
if (b==0){
*x = 1;
*y = 0;
return a;
} else {
int tempX,tempY;
int gcd = extEuclid(b,a%b,&tempX,&tempY);
*y = tempX-(a/b)*tempY;
*x = tempY;
return gcd;
}
}
而使用CPP元组写法上更优雅些:
1
2
3
4
5
6
7
8
9
tuple
if (b==0){
return make_tuple(a,1,0);
} else {
int x,y,gcd;
tie(x,y,gcd) = extEuclidCpp(b,a%b);
return make_tuple(gcd,y,x-(a/b)*y);
}
}
定理: 素数 $p$ 及 $a,b\in\mathbb{Z}$, 若 $p|ab$ 则 $p|a$ 或 $p|b$.
设 $p\nmid a$ 且 $p\nmid b$, 则 $\exists x,y$ s.t. $xp+ya=1$, 故 $x(ab)+(by)p=b$, 有 $p|b$, 矛盾.
唯一分解: $\forall n\in\mathbb{Z}$, $n=\prod p_i^{k_i}$, $p_i$ 为不同素数, $k_i\in\mathbb{Z}_+$, 形式唯一.
同余
性质: $\forall m\in\mathbb{Z}_+$, $a\equiv b({\rm mod}\ m) \Longleftrightarrow m|a-b$.
$a\equiv b({\rm mod}\ m)$, $c\equiv d({\rm mod}\ m) \Longrightarrow a+c\equiv b+d({\rm mod}\ m)$, $ac\equiv bd({\rm mod}\ m)$, $a^n\equiv b^n({\rm mod}\ m)$.
$ak\equiv bk({\rm mod}\ m) \Longrightarrow a\equiv b({\rm mod}\ \frac{m}{{\rm gcd}(m,k)})$.
模 $m$ 剩余类: $\mathbb{Z}/m\mathbb{Z}$.
最小非负完全剩余系: $\mathbb{Z}_m=\{0,1…,m-1\}$, 显然 $\forall x\neq y\in\mathbb{Z}_m$ s.t. $x\not\equiv y({\rm mod}\ m)$.
既约剩余系: $\mathbb{Z}_m^*=\{a\in\mathbb{Z}_m|{\rm gcd}(a,m)=1\}$.
Euler $\varphi$ 函数:
$$m=\prod_{i=1}^r p_i^{k_i}, |\mathbb{Z}_m^*|=\varphi(m)=\prod_{i=1}^r p_i^{k_i-1}(p_i-1)=m\prod_{p|m}(1-\frac{1}{p})$$
当 $m=p$ 为素数时, 有 $\varphi(p)=p-1$; $\mathbb{Z}_p^*=\{1,2,…,p-1\}$ 为循环群, 生成元个数为$\varphi(p-1)$.
考察函数性质:
若素数 $p|n$, 则 $\varphi(pn)=p\varphi(n)$;
若素数 $p\nmid n$, 则 $\varphi(pn)=(p-1)\varphi(n)$;
若 ${\rm gcd}(m,n)=1$, 则 $\varphi(m,n)=\varphi(m)\varphi(n)$.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int phi[n+1], prime[n+1];
bool isSieved[n+1];
// O(n), 每个数均只遍历一次
void phiEuler(int n){
int count = 1;
prime[0] = 1;
phi[1] = 1;
for (int i = 2; i < n; ++i){
if (!isSieved[i]){
prime[count++] = i;
phi[i] = i-1;
}
for (int j = 1; i*prime[j] <= n; ++j){
int comp = i*prime[j];
isSieved[comp] = 1;
if (i%prime[j] == 0){
phi[comp] = prime[j]*phi[i];
break;
} else {
phi[comp] = (prime[j]-1)*phi[i];
}
}
}
}
定理: 若 ${\rm \gcd}(a,m)=1$, $x$ 遍历 $\mathbb{Z}_m^*$, 则 $ax$ 也遍历$\mathbb{Z}_m^*$.
考虑 ${\rm gcd}(ax,m)=1$ 及 $ax_i\not\equiv ax_j({\rm mod}\ m)$, $i\neq j$.
逆元: 若 ${\rm gcd}(a,m)=1$, 则 $\exists ! x\in\mathbb{Z}_m^*$ s.t. $ax\equiv 1({\rm mod}\ m)$.
Euler: 若 ${\rm gcd}(a,m)=1$, 则 $a^{\varphi(m)}\equiv 1({\rm mod}\ m)$.
$\mathbb{Z}_m^*=\{x_1,…,x_{\varphi(m)}\}=\{ax_1,…,a_{\varphi(m)}\}$, 故 $\prod x_i\equiv\prod ax_i({\rm mod}\ m)$, 已知 ${\rm gcd}(x_i,m)=1$, 得 $m|a^{\varphi(m)}-1$.
特别 $m=p$ 为素数时, Fermat: 若 $p\nmid a$, 则 $a^{p-1}\equiv 1({\rm mod}\ p)$, 有 $a^{-1}\equiv a^{p-2}({\rm mod}\ p)$.
由扩展Euclid, ${\rm gcd}(a,m)=1$, $\exists s,t\in\mathbb{Z}$ s.t. $as+tm=1$, 即 $a^{-1}\equiv s({\rm mod}\ m)$.
1
2
3
4
5
6
7
8
9
int inverse(int a, int m){
int s,t;
int gcd = extEuclid(a,m,&s,&t);
if (gcd == 1){
return s;
} else {
return 0;
}
}
wilson: 素数 $p$ 有 $(p-1)!\equiv -1({\rm mod}\ p)$.
$\mathbb{Z}_m^*$ 中元素均存在逆, 自逆仅 $1,p-1$; $\{2,3,…,p-2\}$ 中两两配对互逆.
1
2
3
4
5
6
7
bool wilson(int p){
int factMod = 1;
for (int i = p-1; i >= 1; --i){
factMod = (factMod*i)%p;
}
return (factMod+1)%p == 0;
}
仿射: ${\rm gcd}(a,26)=1$, 密钥对数量 $26\varphi(26)-1=311$.
加密 $c=E_{a,b}(m)=am+b({\rm mod}\ 26)$.
解密 $m=D_{a,b}(c)=a^{-1}(c-b)({\rm mod}\ 26)$.
同余式
同余式 $f(x)\equiv a_nx^n+…+a_1x+a_0({\rm mod}\ m)$, $a_i\in\mathbb{z}$, $m\in\mathbb{Z}_+$.
同余方程 $f(x)\equiv 0({\rm mod}\ m)$ 至多有 $m$ 个解(剩余类).
一次同余 $ax\equiv b({\rm mod}\ m)$, $a,b\in\mathbb{Z}$, $m\in\mathbb{Z}_+$ 有解 $\iff {\rm gcd}(a,m)|b$.
$ax\equiv b({\rm mod}\ m)$ 在 ${\rm gcd}(a,m)=1$ 时有唯一解 $x\equiv a^{-1}b({\rm mod}\ m)$.
记 $d={\rm gcd}(a,m)$, 有 $\frac{a}{d}x\equiv \frac{b}{d}({\rm mod}\ \frac{m}{d})$, 即 $x=\frac{b}{d}(\frac{a}{d})^{-1}+k\frac{m}{d}$, $k\in\mathbb{Z}$.
考虑 $k=qd+r$, $q,r\in\mathbb{Z}$, $0\leq r< d$, $x=[\frac{b}{d}(\frac{a}{d})^{-1}({\rm mod}\frac{m}{d})+r\frac{m}{d}]({\rm mod\ m})$.
求解步骤:
(1) 扩展Euclid求 $d={\rm gcd}(a,m)$, 记 $sa+tm=d$;
(2) $b\%d=0$ 判断有无解;
(3) 设 $b’=b/d$, $m’=m/d$, $s’\equiv s({\rm mod}\ m’)$;
(4) 得 $x\equiv s’b’+rm’\ ({\rm mod}\ m)$, $r=0,1,…,d-1$.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int linearCongEq (int a, int b, int m, int ansX[]){
a %= m;
b %= m;
int s,t;
int origM = m;
int d = extEuclid(a,m,&s,&t);
if (b%d == 0){
b /= d;
m /= d;
s %= m;
for (int r = 0; r <= d-1; ++r){
ansX[r] = ((s*b+r*m)%(origM)+origM)%origM;
}
return d;
} else {
return 0;
}
}
一次同余组(CRT): $m_{i{1\leq i \leq k}}$ 两两互素, 同余组 $x\equiv a_i({\rm mod\ m_i})_{{1\leq i\leq k}}$ 有唯一解 $x=\sum M_i M_i^{-1} a_i \ ({\rm mod}\ m)$. 其中, $m=\prod m_i$, $M_i=m/m_i$, $M_i^{-1}$ 为模 $m_i$ 上的逆.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
long crt (int a[],int m[],int n){
int modSepM[n];
int modIevM[n];
long modM[n];
long prodM = 1;
long x = 0;
for (int i = 0; i < n; ++i){
prodM *= m[i]*1L;
}
for (int i = 0; i < n; ++i){
modM[i] = 1L*prodM/m[i];
modSepM[i] = (1L*modM[i])%m[i];
modIevM[i] = inverse(modSepM[i],m[i]);
if (!modIevM[i]){
return 0;
}
}
for (int i = 0; i < n; ++i) {
x = (x+1L*modIevM[i]*modM[i]*a[i])%prodM;
}
x = (x+prodM)%prodM;
return x;
}
RSA: 素数$p,q$, $n=pq$, ${\rm gcd}(e,\varphi(n))=1$, $\varphi(n)=(p-1)(q-1)$.
公钥 $(e,n)$, 加密 $c=E_{e,n}(m)\equiv m^e({\rm mod}\ n)$.
私钥$d\equiv e^{-1}({\rm mod}\ \varphi(n))$, 解密 $m=D_{d,n}(m)\equiv c^d({\rm mod}\ n)$.
快速模幂 $r\equiv t^e({\rm mod}\ n)$.
1
2
3
4
5
6
7
8
9
10
11
int fastPowerMod (int t, int ex, int n){
int r = 1;
while (ex){
if (ex&1){
r = (1LL*r*t)%modular;
}
t = (1LL*t*t)%modular;
ex >>= 1;
}
return r;
}
二次剩余
$ax^2+bx+c\equiv 0({\rm mod}\ m)$ 总能简化为 $x^2\equiv d({\rm mod}\ q^k)$, $q$ 为素数, $a,b,c,d,m,k\in\mathbb{Z}_+$.
仅考虑 $x^2\equiv a({\rm mod}\ q)$, ${\rm gcd}(a,p)=1$, $a\in\mathbb{Z}$ 为模素数 $q$ 的二次剩余.
Euler: ${\rm gcd}(a,p)=1$, $p$ 为奇素数, $a\in\mathbb{Z}$:
模 $p$ 的二次剩余恰有 $\frac{p-1}{2}$ 个.
$a$ 为模 $p$ 二次剩余 $\iff a^{\frac{p-1}{2}}\equiv 1({\rm mod}\ p)$, 此时 $x^2\equiv a({\rm mod}\ p)$ 有二解.
$a$ 为模 $p$ 二次非剩余 $\iff a^{\frac{p-1}{2}}\equiv -1({\rm mod}\ p)$.
显然 $i^2\equiv(p-i)^2({\rm mod}\ p)$; 若 $j^2\equiv i^2({\rm mod}\ p)$, $1\leq i $a$ 为模 $p$ 二次剩余时, $\exists x_0\in\mathbb{Z}$, ${\rm gcd}(x_0,p)=1$, $x_0^2\equiv a({\rm mod}\ p)$, 故 $a^{\frac{p-1}{2}}\equiv x_0^{p-1}\equiv 1({\rm mod}\ p)$. $a$ 为模 $p$ 二次非剩余时, 考虑 $a^{p-1}\equiv 1({\rm mod}\ p)$, 则 $p|{\frac{p-1}{2}}-1$ 或 $p|{\frac{p-1}{2}}+1$, 但 $x^{\frac{p-1}{2}}\equiv 1({\rm mod}\ p)$ 的全部解恰为全部的二次剩余. Legendre: $(\frac{a}{p})=a^{\frac{p-1}{2}}\%p=1\ {\rm or}\ -1\ {\rm or}\ 0$, $p$ 为素数, $a\in\mathbb{Z}$. $$ (\frac{1}{p}) = 1;\ (\frac{ab}{p})=(\frac{a}{p})(\frac{b}{p}); \ (\frac{a+b}{p})=(\frac{a}{p})+(\frac{b}{p})$$ $$(\frac{a^2}{p})=1,\ {\rm gcd}(a,p)=1$$ $$ (\frac{-1}{p})=\begin{cases} &1,\ &p\%4=1\\ &-1,\ &p\%4=3 \end{cases}$$ $$ (\frac{2}{p})=\begin{cases} &1,\ &p\%8=1,7\\ &-1,\ &p\%8=3,5 \end{cases}$$ 二次互反: $(\frac{p}{q})(\frac{q}{p})=(-1)^{\frac{p-1}{2}\frac{q-1}{2}}$, $p\ne q$ 为奇素数. Guass: 奇素数 $p$, $a\in\mathbb{Z}$, ${\rm gcd}(a,p)=1$, 设 $M_{a,p}=\{ka\%p, \ k=1,2,…,\frac{p-1}{2}\ |\ ka\%p>\frac{p}{2}\}$, 记 $m(a,p)=|M_{a,p}|$, 则 $(\frac{a}{p})=(-1)^{m(a,p)}$. 设 $K=\{ka\%p\ |\ k=1,2,…,\frac{p-1}{2}\}$, $b_i\in M$, $c_j\in M-K$, $i=1,2,..,m(a,p)$, $j=1,2,…,\frac{p-1}{2}-m(a,p)$. 显然有 $c_j\ne p-b_i$, $\forall i,j$; 否则 $p|b_i+c_j$, 即 $\exists x,y\in\mathbb{Z}$, $x,y<\frac{p}{2}$ s.t. $p|a(x+y)$, 但 $x+y
故 $a^{\frac{p-1}{2}}(\frac{p-1}{2})!\equiv\prod c_j \prod (p-b_i)\equiv (-1)^{m(a,p)}(\frac{p-1}{2})!({\rm mod}\ p)$. Eisenstein: $a$ 为奇数时, 记$e(a,p)=\sum\lfloor\frac{ka}{p}\rfloor$, 有 $e(a,p)\equiv m(a,p)({\rm mod}\ 2)$. 不妨设 $ka=d_kp+r_k$, $0\leq r_k\leq p-1$, $d_k,r_k\in\mathbb{Z}$, 有 $p\sum d_k+\sum r_k=\sum ka = \sum c_j+\sum (p-b_i)$, 故 $\sum d_k\equiv m(a,p)({\rm mod}\ 2)$; 显然 $e(a,p)=\sum d_k$. $q\ne p$ 为奇素数时, $\not\exists x,y\in\mathbb{Z}$, $x,y<\frac{p}{2}$ s.t. $xp=qy$, 即 $e(p,q)+e(q,p)=\frac{p-1}{2}\frac{q-1}{2}$. $a=2$ 时, $\lfloor\frac{p}{4}\rfloor\leq k\leq \lfloor\frac{p}{2}\rfloor$, 有 $m=\lfloor\frac{p}{2}\rfloor-\lfloor\frac{p}{4}\rfloor$. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 int fastLegendre(int a, int p){ int s; int e = 0; if (a == 0 || a == 1){ return a; } else { while (a%2 == 0){ a /= 2; ++e; } if (e%2 == 0 || p%8 == 1 || p%8 == 7){ s = 1; } else { s = -1; } if (p%4 == 3 && a%4 == 3){ s = -s; } if (a == 1){ return s; } else { return s*fastLegendre(p%a,a); } } } Rabin: 素数 $p\equiv q\equiv 3({\rm mod}\ 4)$. 公钥 $n=pq$, 加密 $c\equiv E_{n}(m)\equiv m^2({\rm mod}\ n)$. 私钥 $(p,q)$, 解密 $m\equiv D_{p,q}(c)\equiv \pm c^{\frac{p+1}{4}}({\rm mod}\ p)\equiv \pm c^{\frac{q+1}{4}}({\rm mod}\ q)\ (2\ {\rm in}\ 4)$. 原根 原根: $a,m\in\mathbb{Z}$, $m>1$, ${\rm gcd}(a,m)=1$, 记 ${\rm ord}_m(a)=\inf\{x\in\mathbb{Z}_+\ | \ a^x\equiv 1({\rm mod}\ m)\}$ 称为 $a$ 对模 $m$ 的阶; 特别, ${\rm ord}_m(a)=\varphi(m)$ 时称 $a$ 为模 $m$ 的原根. 定理: $a,m\in\mathbb{Z}$, $m>1$, ${\rm gcd}(a,m)=1$, 则 $a^n\equiv 1({\rm mod}\ m)\iff {\rm ord}_m(a)|n$. 特别, ${\rm ord}_m(a)|\varphi(m)$. 定理: $g$ 为模 $m$ 原根 $\iff g^{\frac{\varphi(m)}{p_i}}\not\equiv 1({\rm mod}\ m)$, $\forall$ 素数 $p_i|\varphi(m)$. 必要性: 显然. 充分性: 若 $\exists e<\varphi(m)$ s.t. $g^e\equiv 1({\rm mod}\ m)$; 不妨设 $\frac{\varphi(m)}{e}=kp$, $k\in\mathbb{Z}$, $p$ 为素数; 进而 $g^{\frac{\varphi(m)}{e}\equiv(g^p)^k\equiv 1({\rm mod}\ m)}$, 矛盾. 定理: $a,m,d\in\mathbb{Z}_+$, ${\rm gcd}(a,m)=1$, ${\rm ord}_m(a^d)=\frac{{\rm ord}_m(a)}{{\rm gcd}({\rm ord}_m(a),d)}$. 推论: 模 $m$ 存在原根时, 有 $\varphi(\varphi(m))$ 个原根; 同时原根为模 $m$ 上本原多项式的全部解. 以下显然: ${\rm ord}_m(a)={\rm ord}_m(a^{-1})$. $b\equiv a({\rm mod}\ m)$, 则 ${\rm ord}_m(b)={\rm ord}_m(a)$. ${\rm gcd}(a,m)=1$, $a^0,a^1,…,a^{{\rm ord}_m(a)-1}$ 两两模 $m$ 不同余. 特别, $g$ 为模 $m$ 原根时, 恰好有 $\mathbb{Z}_p^*={g^0,g^1,…,g^{\varphi(g)-1}}$. $g$ 为模 $m$ 原根时, $x,y\in\mathbb{Z}$, $g^x\equiv g^y({\rm mod}\ m) \iff x\equiv y({\rm mod}\ \varphi(m))$. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 bool nMod1(int a, int n, int p, int* primeFact){ int num = 0, r; while(primeFact[num]){ r = fastPowerMod(a,n/primeFact[num],p); if (r == 1){ break; } else { ++num; } if(!primeFact[num]) { return true; } } return false; } int minPrimeRoot(int p){ int n = p-1, res = 0; int primeFact[10] = {0}; factPrime(n,primeFact); for (int i = 2; i <= p/2; ++i) { if (nMod1(i,n,p,primeFact)){ res = i; break; } } return res; } D-H协议: 大素数 $p$ 和模 $p$ 原根 $g$, 任选 $2\leq x,y\leq p-2$. 公钥 $(p,g)$, 私钥 $x,y$. 握手: $k_{X\to Y}\equiv g^x({\rm mod}\ p)$, $k_{Y\to X}\equiv g^y({\rm mod}\ p)$. 密钥: $k\equiv k_{Y\to X}^x\equiv k_{X\to Y}^y \equiv g^{xy}({\rm mod}\ p)$. ElGamal: 大素数 $p$ 和模 $p$ 原根 $g$, 任选 $2\leq a\leq p-2$, $Y_a\equiv g^a({\rm mod}\ p)$. 公钥 $(p,g,Y_a)$, 加密 $u\equiv g^k({\rm mod}\ p)$, $v\equiv mY_a^k({\rm mod}\ p)$, $c=E_{p,g,Y_a,k}(m)=(u,v)$, 任选 $2\leq k\leq p-2$. 私钥 $a$, 解密 $m\equiv D_a(c)\equiv \frac{v}{u^a}({\rm mod}\ p)$. 群 有限群: 非空有限集 $G$ 上代数运算满足结合律, 存在单位元(记 $e$), 逆元(记 $a^{-1}$); 记 $|G|={\rm Card}(G)$ 为阶; 定义 $a^{-n}=(a^{-1})^n$, $a^0=e$. 半群: 只满足结合律. 幺半群: 存在单位元的半群. 交换半群: 满足交换律的半群. 交换幺半群: 存在单位元满足交换律的半群. Abel群: 满足交换律的群. 消去律: 可由结合律和逆元推得. 元素的阶: $|a|=\inf \{n\in\mathbb{N}_+\ |\ a^n = e\}$ 或 $\infty$; $|a^{-1}|=|a|$, $|a^d|=\frac{|a|}{{\rm gcd}(|a|,d)}$; 若 $n\in\mathbb{Z}$, $a^n=e$ 则 $|a||n$. 不妨设 $|a|=n$, $|a^d|=m$, 由于 $a^{dm}=e$, 即 $n|dm$, 进而 $\frac{n}{{\rm gcd}(n,d)}|\frac{d}{{\rm gcd}(n,d)}m$, 即 $\frac{n}{{\rm gcd}(n,d)}|m$. 同时 $(a^d)^{\frac{n}{{\rm gcd}(n,d)}}=e$, 即 $m|\frac{n}{{\rm gcd}(n,d)}$. 子群: 群 $G$ 的非空子集 $H$ 关于 $G$ 的代数运算构成群, 记 $H $H 循环群: 群 $G$ 的非空子集 $S$, 生成子群 $\langle S\rangle=\bigcap_{S\subset H 特别 $S=\{a\}$ 时, 循环子群 $\langle S\rangle=\langle a\rangle=\{a^n\ |\ n\in\mathbb{Z}\}$; 特别 $G=\langle a\rangle$ 时为循环群 $\iff\exists a\in G$ s.t. $|a|=|G|$; 循环群子群仍为循环群; 无限循环群同构于 $\mathbb{Z}$, $n$ 阶循环群同构于 $\mathbb{Z}_n$. 不妨设 $H 陪集: $H $a\in G$, $aH=H\iff a,b\in G$, $aH=bH$ 或 $aH\cap bH=\empty$, $|H|=|aH|$; $G=\bigsqcup_{g\in G}gH$. Lagrange: 记 $[G:H]=\frac{|G|}{|H|}$, $|G|=[G:H]|H|$; $|a|||G|$. 正规子群: $H 商群: $H\lhd G$, $G/H=\{aH\ |\ a\in G\}$, $aH\ast bH=(ab)H$. 同态: 保持代数运算不变的映射, 双射时为同构. 群同态: 群 $G_1,G_2$, 映射 $f:G_1\to G_2$, $f(ab)=f(a)f(b)$, $\forall a,b\in G_1$. 同态 Paillier: 素数 $p,q$, $n=pq$, $\lambda = {\rm lcm}(p-1)(q-1)$ 最小公倍数, $g\in\mathbb{Z}_{n^2}^*$ s.t. ${\rm gcd} (\frac{g^\lambda \% n^2 -1}{n},n)=1$. 公钥 $(n,g)$, 加密 $c\equiv E_{n,g}(m)\equiv g^m r^n({\rm mod}\ n^2)$, $r\in\mathbb{Z}_n^*$. 私钥 $\lambda$, 解密 $m\equiv D_\lambda(c)\equiv\frac{c^\lambda \%n-1}{g^\lambda \&n-1}({\rm mod}\ n^2)$. 加法同态: $m_1+m_2=D_\lambda[E_{n,g}(m_1)E_{n,g}(m_2)]$. 置换群: 非空集合 $X$ 上所有可逆变换(双射)关于复合构成对称群 $S_x$; $S_x$ 子群称为变换群; 特别 $|X|=n$ 时, 记 $S_x = S_n$, $S_n$及其子群称为置换群, 元素 $\sigma$ 称为置换; $|S_n|=n!$. 轮换: $f\in S_n$, $i_1,…,i_r\in X$, $f(i_1)=i_2,…,f(i_{r-1})=i_r,f(i_r)=i_1$ 且保持其他元素不变时, $f=(i_1,i_2,…,i_r)$ 称为 $r$ -轮换; 特别 $r=1$ 时为恒等变换, $r=2$ 时称为对换; 任意置换可唯一表示为不相交的轮换之积; 任意轮换可以表示为对换之积. Cayley: 任意有限群同构于一置换群. 环和域 环: 非空集合 $R$ 上两个代数运算 $(+,\cdot)$, $(R,+)$ 为Abel群, $(R,\cdot)$ 为半群, $\cdot$ 对 $+$ 有双边分配律; 为区别, $+$ 的单位元称为零元(记 $0$), 逆元称为负元(记 $-a$). 单位: $a\in R$, $\exists b\in R$ s.t. $ab=ba=e$, 则称 $a$ 为单位; 环中所有单位构成单位群, 记 $U(R)$; $U(\mathbb{Z}_m)=\mathbb{Z}_m^*$. 零因子: 非零元 $a,b\in R$ s.t. $ab=0$, $a$ 为 $b$ 的左零因子. 交换环: $(R,\cdot)$ 为交换半群. 交换幺环: $(R,\cdot)$ 为交换幺半群. 无零因子环: $(R,\cdot)$ 为无零因子半群. 整环: $(R,\cdot)$ 为无零因子交换幺半群. 域: $(R-\{0\},\cdot)$ 为Abel群. 双边理想: 非空集合 $I\subset R$, $I$ 对 $+$ 封闭, 对 $\cdot$ 吸收, 即 $\forall s\in R$, $sI\subset I$, $Is\subset I$, 记 $I \lhd R$; $d\mathbb{Z}\lhd\mathbb{Z}$. 商环: $I\lhd R$, $R/I < R$; $R/I=\{a+I\ | \ a\in R\}$. $(a+I)+(b+I)=(a+b)+I$, $(a+I)(b+I)=(ab)+I$. 映射: 不妨设 $a_1+I=a_2+I$, $b_1+I=b_2+I$, 则有 $(a_1b_1)+I=(a_2b_2)+I$. 考虑 $a_1-a_2\in I$, $b_1-b_2\in I$, 有 $a_1=s+a_2$, $b_1=t+b_2$, $s, t\in I$, 进而 $a_1b_1=a_2b_2+x=a_2b_2+(sb_2+ta_2+st)$, 同时 $x\in I$. 封闭: $\forall x\in I$, $(a+x)(b+x)=ab+(a+b+x)x\in (ab)+I$. 由此可知, 理想的吸收性可确保商环存在. 生成理想: 非空集合 $S\subset R$, 包含 $S$ 的所有理想的交集; 特别 $S=\{a\}$ 时, 记 $\langle S\rangle=\langle a\rangle$ 为 $a$ 生成的主理想; 特别 $R$ 为交换幺环时, 主理想 $\langle a\rangle=\{ra\ | \ r\in R\}$; $\mathbb{Z}$ 的所有理想均为主理想. 任取非平凡理想 $I\lhd \mathbb{Z}$, $\exists$ 最小 $t\in\mathbb{Z}_+$, $\forall m\in I$, $m=qt+r$, $q,r\in I$, $0\leq r 素理想: 交换幺环 $R$, 非平凡 $P\lhd R$, 若 $ab\in P$, 有 $a\in P$ 或 $b\in P$; 特别整环中, 素元 $p$, $\langle p\rangle$ 为素理想. 交换幺环 $R$, $P\lhd R$, $R/P$ 为整环 $\iff P$ 为素理想. 极大理想: 交换幺环 $R$, 非平凡 $M\lhd R$, 无真包含 $M$ 的非平凡理想. 交换幺环 $R$, $M\lhd R$, $R/M$ 为域 $\iff M$ 为极大理想. 极大理想一定为素理想, 反之不然. Euclid整环(ED): 满足Euclid性的整环, $\forall a,b\in R-\{0\}$, 有映射 $\varepsilon: R-\{0\}\to \mathbb{Z}_+$ s.t. $\varepsilon(a)\leq\varepsilon(ab)$, $\exists r,q\in R$ s.t. $a=bq+r$, $\varepsilon(r)<\varepsilon(b)$ 或 $r=0$; 其上有最大公因数. 主理想整环(PID): 理想均为主理想的整环; 其上素元和不可约元等价, 素理想和极大理想等价; 素元为非零元非单位 $p$ s.t. $a,b\in R$, 若 $p|ab$, 有 $p|a$ 或 $p|b$; 不可约元为非零元非单位 $q$ s.t. $a,b\in R$, 若 $q=ab$, 有 $a$ 或 $b$ 为单位. 唯一析因整环(UFD): 整环 $R$ 中非零元非单位的元素可以唯一表示为有限个不可约元的积. 定理: 所有域都是ED; 所有ED都是PID; 所有PID都是UFD. 特征: ${\rm char}(R)=\inf\{n\in\mathbb{Z}_+\ | \ na=a,\forall a\in R\}$ 或0; ${\rm char}(\mathbb{Z})=0$, ${\rm char}(\mathbb{Z}_m)=m$; 整环特征必为0或素数, 非空有限域特征必为素数, ${\rm char}(F_p)=p$; $\forall a,b\in F_p$, $(a+b)^p=a^p+b^p$. $|e| = \infty$ 时, ${\rm char}(R)=0$. $|e| = n$ 时, 若 $n$ 为合数, $\exists p|n$,不妨设 $pc=n$, $ne=(pe)(ce)=0$, 则 $pe=0$ 或 $ce=0$, 矛盾. $\forall a\in R$, $na=(ne)a=0$. 单变量多项式环: 整环 $R$ 上整环 $R[x]=\{a_nx^n+…+a_1x+a_0\ | \ a_i\in R\}$; 记 $f(x)=a_nx^n+…+a_1x+a_0$, $a_n\ne 0$ 时, 记 ${\rm deg}f=n$; 特别 ${\rm deg}0=-\infty$. $f(x),g(x),h(x)\in R[x]$, $f(x)g(x)=h(x)$, 则 ${\rm deg}f+{\rm deg}g={\rm deg}h$. 域 $K$, $f(x)\in K[x]$, ${\rm deg}f>0$, $p(x)$ 为 $f(x)$ 次数最小的因式, 则 $p(x)$ 为 $K[x]$ 上不可约多项式, 且 ${\rm deg}p\leq \frac{1}{2}{\rm deg}f$. 带余除法: $f(x),g(x)\in R[x]$, 则 $\exists q(x),r(x)\in R[x]$ s.t. $f(x)=q(x)g(x)+r(x)$, ${\rm deg}r<{\rm deg}g$. $f(x)\in R[x]$, $a\in R$, 则 $\exists q(x)$ s.t. $f(x)=(x-a)q(x)+f(a)$. $f(x)\in R[x]$, $a\in R$, 则 $x-a|f(x)\iff f(a)=0$. 同余: 首一多项式 $m(x)\in R[x]$, $f(x),g(x)\in R[x]$, $m(x)|f(x)-g(x)$, 记 $f(x)\equiv g(x)({\rm mod}\ m(x))$. Euclid: 域 $K$ 上 $K[x]$ 为ED; 即有Euclid性和最大公因式. $f(x),g(x)\in K[x]$, $g(x)|f(x)\iff r(x)=0$. $f(x)\in K[x]$, $\forall K[x]$ 上不可约多项式 $p(x)$, ${\rm deg}p\leq {\rm deg}f$, s.t. $p(x)\nmid f(x)$, 则 $f(x)$ 为 $K[x]$ 上不可约多项式. 定理: 域 $F$ 上 $F[x]$, $f(x)\in F(x)$, 则 $F[x]/f(x)$ 为域 $\iff f(x)$ 为 $F[x]$ 上不可约多项式. 特别有素数 $p$ 和 $F[x]$ 上不可约多项式 $degr=n$, $F_p[x]/ 有限域结构: $\forall$ 素数 $p$, $n\in\mathbb{Z}_+$, 存在同构意义下唯一的有限域 $F_{p^n}$ s.t. $|F_{p^n}|=p^n$, ${\rm char}(F_{p^n})=p$. NTRU: 环 $L=\mathbb{Z}[x]/(x^n-1)$, $n$ 为大素数; 选取大数 $p,q$, 有 ${\rm gcd}(p,q)=1$ 且 $q\ll p$; 选取 $f(x),g(x)\in L$, 有 ${\rm deg}f={\rm deg}g=n-1$. $f^{-1}_p(x)$ 为 $f(x)$ 系数模 $p$ 逆, $f^{-1}_q(x)$ 为 $f(x)$ 系数模 $q$ 逆; $h(x)\equiv f^{-1}_q(x)({\rm mod}\ q)$. 公钥 $(n,p,q,h(x))$, 明文多项式 $m(x)=\sum a_ix_i$ 有 $|a_i|\leq \frac{p-1}{2}$ 及 ${\rm deg}m\leq n$, 随机选取噪音 $r(x)\in L$, 加密 $c(x)\equiv pr(x)h(x)+m(x)({\rm mod}\ q)$. 私钥 $(f(x),f^{-1}_p(x))$, 解密 $d(x)\equiv f(x)c(c)({\rm mod}q)$, $b(x)\equiv d(x)({\rm mod}\ p)$, $m(x)\equiv f^{-1}_p(x)({\rm mod}\ p)$. 椭圆曲线群 定义: 域 $F$, $a,b,c,d,e\in F$, 满足Weierstrass方程 $E=y^2+axy+by=x^3+cx^2+dx+e$ 所有点 $(x,y)$ 和无穷远点 $O$ 的集合. Hasse定理: 有限域 $GF(p)$ 上椭圆曲线, $n$ 为 $E$ 上点 $(x,y)$, $x,y\in\mathbb{Z}_p$ 的个数, 则 $|n-(p+1)|\leq 2\sqrt p$. 有限域上椭圆曲线: 有限域 $GF(p)$ 上椭圆曲线 $y^2\equiv x^2+ax+b({\rm mod}\ p)$, $a,b,x,y\in GF(P)$, 且满足 $4a^3+27b^2\not\equiv 0({\rm mod}\ p)$ (此时无重根), 记为 $E_p(a,b)$. 构造: $x$ 遍历 $\in\mathbb{Z}_p$, $t_x\equiv x^3+ax+b({\rm mod}\ p)$, $a,b\in GF(p)$; Euler保留所有模 $p$ 二次剩余的 $t_x$, 并求出两根; $t=0$ 时只有一根 $y=0$. 定理: $E_p(a,b)$ 关于点的加法构成Abel群. 无穷远点 $O$ 为单位元, 逆元为关于 $x$ 轴对称点, 横坐标不同的点(相同的只有自身和逆元)相加为连线延长线与曲线交点关于 $x$ 轴的对称点, 相同点相加为该点处切线与曲线交点关于 $x$ 轴的对称点. 不妨设 $P,Q\in E_p(a,b)$, $P,Q\ne O$, $P=(x_1,y_1)$, $Q=(x_2,y_2)$, $R=P+Q=(x_3,y_3)\ne O$. 则 $x_3=\lambda^2-x_1-x_2$, $y_3=\lambda(x_1-x_3)-y_1$, 其中 $\lambda=\frac{y_2-y_1}{x_2-x_1}\ (P\ne Q);\ \frac{3x_1^2+a}{2y_1}\ (P=Q)$. ECDH: 椭圆曲线群 $E_p$, $G\in E_p$, $|G|=q$ 为大素数, 任选 $2\leq a,b\leq q-1$. 公钥 $(p,G)$, 私钥 $x,y$. 握手: $k_{A\to B}=aG$, $k_{B\to A}=bG$. 密钥: $k=ak_{B\to A}=bk_{A\to B}=(ab)G$. ECEG: 椭圆曲线群 $E_p$, $G\in E_p$, $|G|=q$ 为大素数, 任选 $2\leq d\leq q-1$, $P=dG$. 公钥 $(P,G,E,n)$, 加密 $C_1=rG$, $C_2=M+rP$, $C=E_{E_p,P,G,r}(M)=\{C_1,C_2\}$, 任选 $2\leq r\leq q-1$. 私钥 $d$, 解密 $M=D_{E_p,d}(C)=C_2-dC_1$. 快速倍乘 $P=mG$, $m\in\mathbb{Z}_p$, $G\in\ E_p(a,b)$. 传统算法 素数定理: $\pi(x)$ 为 $\leq x$ 的素数个数, 有 $\lim_{x\to\infty}\frac{\pi(x)}{x/\ln x}=1$. Fermat测试: 若 $n$ 为素数, $a\in\mathbb{Z}$, $1\leq a\leq n-1$, 则 $a^{n-1}\equiv 1({\rm mod}\ n)$. 随机测试 $t$ 次, 确为素数可能性大于 $1-\frac{1}{2^t}$. 1 2 3 4 5 6 7 bool fermat(int n){ int a,r; srand((unsigned int)time(0)); a = rand()%p+1; r = fastPowerMod(a,p-1,p); return r == 1; } Solovay-Stranssen测试: Jacobi符号 $(\frac{a}{m})=\prod(\frac{a}{p_i})^{\alpha_i}$, 其中 $n=\prod(p_i^{\alpha_i})$. 若 $n$ 为素数, $x=(\frac{a}{n})$, $y\equiv a^{\frac{n-1}{2}}({\rm mod}\ n)$, 则 $x\equiv y({\rm mod}\ n)$. 1 2 3 4 5 6 7 8 9 bool solovayStrassenX(int p){ int a, x, y; srand((unsigned int)time(0)); a = rand()%p+1; x = jacobi(a,p); // jacobi同fastLegendre x = (x+p)%p; y = fastPowerMod(a,(p-1)/2,p); return x != 0 && x == y; } Millar-Rabin测试: Fermat测试时, 不妨设 $a^{n-1}=(a^t)^{2^k}$, $a^t\equiv 1({\rm mod}\ n)$ 则直接满足素性条件, 否则检验 $a^t$ 的 $i=1,…,k-1$ 次平方, $(a^{t})^{2^i}\equiv -1({\rm mod}\ n)$ 时直接满足素性条件. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 bool millerRabin(int p){ int k = 0, t = p-1, a, r; while(t%2 == 0){ t >>= 1; ++k; } srand((unsigned int)time(0)); a = rand()%p+1; r = fastPowerMod(a,t,p); if (r == 1){ return true; } else{ for (int j = 0; j < k; ++j) { if (r == p-1){ return true; } else { r = (1LL*r*r)%p; } } } return false; } 大合数分解: 试除法时间复杂度 $O(\sqrt n)$. Pollard-$\rho$ 法: 有限集上随机函数存在碰撞; $n$ 不为素数或某个素数的幂, 寻找小因子. 1 2 3 4 5 6 7 8 9 10 11 12 13 int rho(int n){ int a = 2, b = 2, d; do { a = ((1LL*a*a)+1)%n; b = ((1LL*b*b)+1)%n; b = ((1LL*b*b)+1)%n; d = gcd(a-b,n); if ((1 < d) && (d < n)){ return d; } } while (d != n); return -1; } Pollard-$p-1$ 法: 素数 $p|n$, $p-1$ 分解中素因子最大次幂 $q|p-1$, $\forall B\geq q$ s.t. $p-1|B$, 即 $2^{B!}\equiv 2^{p-1}\equiv 1({\rm mod}\ p)$, 故有 $p|{\rm gcd}(n,2^{B!}-1)$. 1 2 3 4 5 6 7 8 9 10 11 12 int pollard(int n){ int B = 24; int a = 2; for (int i = 2; i <= B; ++i) { a = fastPowerMod(a,i,n); } int d = gcd(a-1,n); if ((d > 1) && (d < n)){ return d; } return -1; } 随机平方法: $x,y\in\mathbb{Z}$ s.t. $x^2\equiv y^2({\rm mod}\ n)$, $x\not\equiv\pm y({\rm mod}\ n)$, 若 $n|x^2-y^2$ 且 $n\nmid x-y$ ($n\nmid x+y$), 则素数 $p={\rm gcd}(x+y,n)$ ($p={\rm gcd}(x-y,n)$). 离散对数求解: 有限域 $F_p$ 上遍历需要 $O(p)$ 次乘法. 小步大步法(Shank): 群阶为 $n$, $m=\lceil\sqrt n\rceil$, 设 $\log_a b=x=mj+i$, $0\leq i,j\leq m-1$, 即 $b(a^{-i})=(a^m)^j$; 搜索树存储 $1,a^m,…,(a^m)^{m-1}$, 遍历 $b(a^{-i})$ 并匹配. Pollard-$\rho$ 法: 素数 $p$, $a,b\in\mathbb{Z}_p^*$, 不妨设 $x_i=a^{m_i}b^{n_i}$, 有碰撞 $x_i=x_{2i}$ 时, 有 $\log_a b\equiv (n_{2i}-n_i)^{-1}(m_{2i}-m_i)({\rm mod}\ |a|)$. $$f(x_{i+1},m_{i+1},n{i_1})=\begin{cases} (bx,m_i,n_i+1),\ & x_i\in S_1 \\ (x^2,2m_i,2n_i),\ & x_i\in S_2 \\ (ax,m_i+1,n_i),\ & x_i\in S_3 \end{cases},\ S_1\sqcup S_2\sqcup S_3=\mathbb{Z}_p^*$$ 指数演算法: 素数 $p$, 原根 $a\in\mathbb{Z}_p^*$, 小素因子基 $B=\{p_1,p_2,…,p_k\}$, 选取 $k$ 个 $1\leq x\leq p-2$ 均 s.t. $x\equiv \alpha_1\log_a p_1+\alpha_2\log_a p_2+…+\alpha_k\log_a p_k({\rm mod}\ p-1)$, 可解得 $\log_a p_1,\log_a p_2,…,\log_a p_k$; 选取 $1\leq s\leq p-2$ s.t. $\log_a b+s\equiv \gamma_1\log_a p_1+\gamma_2\log_a p_2+…+\gamma_k\log_a p_k({\rm mod}\ p-1)$ Pohlig-Hellman算法: 素数 $p$, 原根 $a\in\mathbb{Z}_p^*$, 最小原根 $g$, $a\equiv g^m({\rm mod}\ p)$, $b\equiv g^n({\rm mod}\ p)$, 则 $m\log_a b\equiv n({\rm mod}\ p-1)$ 可由扩展Euclid算法给出. $p-1=\prod_{i=1}^k p_i^{\alpha_i}$ 中均为小素数, 有 $k$ 个同余式 $m\equiv \sum_{j=0}^{\alpha_i-1} c_{ij}p_i^j({\rm mod}\ p_i^{k_i})$; 由 Fermat 可得 $g^{c_{ij}\frac{p-1}{p_i^{\alpha_i}}}\equiv a^{\frac{p-1}{p_i}^{\alpha_i}}({\rm mod}\ p)$. 遍历并得到 $0\leq c_{ij}\leq p_i^{\alpha_i}-1$; 对 $k$ 个同余式使用CRT即得到 $m$. 古典密码 古典密码主要为置换密码和代换密码. 置换密码: $\sigma$ 为 $M$ 上一个置换(到自身的双射). 加密: $(c_i)=E_{k}((m_i))=\sigma_{k_i}((m_i))$. 解密: $(m_i)=D_{k}((c-i))=\sigma_{k_i}^{-1}((c_i))$. 代换密码 加密: $c_i=E_{k}(m_i)\equiv f(m_i,k)({\rm mod}\ 26)$. 解密: $m_i=E_{k}(c_i)\equiv f^{-1}(c_i,k^{-1})({\rm mod}\ 26)$. 单表代换可以直接通过字母频率分析破解. 1 2 3 4 5 6 7 8 9 void freqAnalyze(char *cipher, long *cnt){ for (long n = 0; cipher[n]; ++n) { if (isupper(cipher[n])){ cnt[cipher[n]-'A']++; } else if (islower(cipher[n])){ cnt[cipher[n]-'a']++; } } } 粗糙度: ${\rm M.R}=\sum_{i=0}^{25}(p_i-\frac{1}{26})^2=\sum_{i=0}^25p_i^2-0.0385$. 明文或单表代换时 ${\rm M.R}\approx 0.027$, 更接近 $0$ 则更可能为多表代换. 重合指数: ${\rm IC}=\sum_{i=0}^{25}p_i^2$. 多表代换时 ${\rm IC}\approx 0.0655$. 相同字母间隔为 $d_1,…,d_n$, 则密钥可能长度为 ${\rm gcd}(d_1,…,d_n)$. 自同步序列密码 异或$\rm XOR$ ($GF(2)$加法) $\oplus$ 加密: 无条件安全; 可逆. 与同步序列密码相比, 传输产生的错误有界. 种子密钥通过LFSR(线性反馈移位寄存器)生成伪随机密钥序列 $k=k_0k_1k_2…$. 加密 $c_i=E_{k}(m)=m_i\oplus k_i$. 解密 $m_i=D_{k}(m)=c_i\oplus k_i$. LFSR: 状态 $(s_0,s_1,…,s_{n-1})$, 递推关系式 $s_{n+k}=\bigoplus g_is_i$, 反馈函数 $f(s_0,s_1,…,s_{n-1})=\sum g_is_i$, 连接多项式(特征多项式) $g(x)=\sum g_ix_i^i$, $s_i,g_i,x_i\in GF(2)$. e.g. $\ g(x)=1+x+x^2+x^5$, $s_{5+i}=s_{i}+s_{1+i}+s_{4+i}$. $S_0=(1,0,1,1,1)$, $k=101110111011101110111…$, $T=8$. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 // 使用verligo实现LFSR. // 32-bit long module lfsr(32)(clk, reset, lfsr); input clk, reset; output reg [31:0] lfsr; wire d0; xnor(d0, lfsr[31], lfsr[21], lfsr[1], lfsr[0]); always @(posedge clk, posedge reset) begin if(reset) begin lfsr <= 32'h00000001; end else begin lfsr <= {lfsr[30:0], d0}; end end endmodule 定理: $n$ 次特征多项式为 $GF(2^n)$ 上本原多项式时, 输出 $\max T=2^n-1$ 序列($m$ 序列). 将 $x^{2^n-1}-1$ 在 $GF(2^n)$ 上因式分解;