密码学数学基础(二)同余

二、同余

2.1 同余的概念和性质

定义2.1:给定正整数\(m\),若\(m\mid a-b\),即存在整数\(k\)使得\(a-b=km\),则称\(a\)\(b\)对模\(m\)同余,或\(a\)同余于\(b\)\(m\),记作 \[ a\equiv b\pmod m \] 该式称为模\(m\)同余式。当\(0\le b<m\)时,称\(b\)\(a\)对模\(m\)最小非负剩余

符号\(\bmod\)有两种使用方式:

  • 表示同余关系,如\(a\equiv b\pmod m\)
  • 表示取最小非负剩余,如\(a\pmod m\)

定理2.1\(a\)同余于\(b\)\(m\)充要条件\(a\)\(b\)除以\(m\)后所得的最小非负余数相等。

定理显然成立,这也是同余的另一种定义方法。相对于定义2.1,余数相等的定义更容易理解,但定义2.1也同样重要,一定要熟练使用。下面给出一些同余的性质,简单的就不推导了。

定理2.2:同余是一种等价关系,即满足

  • 自反性:\(a\equiv a\pmod m\)
  • 对称性:\(a\equiv b\pmod m\Leftrightarrow b\equiv a\pmod m\)
  • 传递性:\(a\equiv b\pmod m,b\equiv c\pmod m\Leftrightarrow a\equiv c\pmod m\)

定理2.3:同余可以相加减,即若 \[ a\equiv b\pmod m,\quad c\equiv d\pmod m \]\[ a+c\equiv b+d\pmod m \]

定理2.4:同余可以相乘,即若有 \[ a\equiv b\pmod m,\quad c\equiv d\pmod m \]\[ ac\equiv bd\pmod m \]

定义2.2:设\(f(x)=a_nx^n+\cdots+a_0\)\(g(x)=b_nx^n+\cdots+b_0\)是两个整系数多项式,满足 \[ a_j\equiv b_j\pmod m,\quad0\le j\le n \] 则称多项式\(f(x)\)同余于\(g(x)\)\(m\),记作\(f(x)\equiv g(x)\pmod m\)

定理2.5:设\(d\ge 1\)\(d\mid m\),若\(a\equiv b\pmod m\),则 \[ a\equiv b\pmod d \]

定理2.6:同余式 \[ ca\equiv cb\pmod m \] 等价于 \[ a\equiv b\pmod{m/(c,m)} \]

证明:由同余的性质有 \[ ca\equiv cb\pmod m\Leftrightarrow m\mid c(a-b)\Leftrightarrow\frac{m}{(c,m)}\Bigg|\frac{c}{(c,m)}(a-b) \] 因为\(\frac{m}{(c,m)}\)\(\frac{c}{(c,m)}\)互素,所以 \[ \frac{m}{(c,m)}\Bigg|(a-b) \]

特别地,当\(c\)\(m\)互素时,两端同时乘上或除以\(c\)同余式仍成立。记不住上面的没关系,这个特殊情况要记住。

定理2.7:若\(m\ge1\)\((a,m)=1\),则存在\(c\)使得 \[ ca\equiv1\pmod m \]\(c\)\(a\)对模\(m\)逆(元),记作\(a^{-1}\pmod m\)。若限定\(0\le c<m\),则逆元\(c\)是唯一的。

证明:由扩展欧几里得算法知,存在\(x,y\)使得\(ax+my=(a,m)=1\),取\(c=x\)即可。

\(0\le c<m\),存在两个不同的逆元\(c_1,c_2\),则有\(c_1a\equiv c_2a\equiv1\pmod m\),因此\(m\mid a(c_1-c_2)\),由于\((a,m)=1\),所以\(m\mid(c_1-c_2)\),这与\(0\le c_1,c_2<m\)矛盾,因此逆元唯一。由此也能得出\(a\)的全体逆元为剩余类\(c\bmod m\)中的所有元素。

由证明知可以通过扩展欧几里得算法来求逆元。另外注意到定理的条件有\((a,m)=1\),下面说明如果不互素的话必无逆元。

证明:假设\((a,m)>1\),存在\(c\)使得\(ca\equiv1\pmod m\),则有\(ac+my=1\)。因为\((a,m)\mid a,m\),所以有\((a,m)\mid ac+my\),即\((a,m)\mid1\),与假设矛盾。

定理2.8:同余式组 \[ a\equiv b\pmod{m_j},\quad j=1,2,\cdots,k \] 同时成立的充要条件\(a\equiv b\pmod{[m_1,\cdots,m_k]}\)

证明\(a\equiv b\pmod{m_j}\Leftrightarrow m_j\mid a-b\Leftrightarrow[m_1,\cdots,m_k]\mid a-b\)。可结合定理2.5理解。

例2.1:整数\(n\)被9整除的充要条件。

:设\(n=a_k\cdot10^k+\cdots+a_0\)被9整除,因为\(10^k\equiv1\pmod 9\),由同余可以相加和相乘可得 \[ n\equiv a_k+\cdots+a_0\pmod 9 \] 因此充要条件为各位数之和被9整除。

2.2 剩余类和剩余系

定义2.3:给定正整数\(m\),所有对\(m\)同余的数组成的集合称为模\(m\)的一个剩余类,用\(r\bmod m\)表示\(r\)所属的剩余类。如果\((r,m)=1\),则\(r\bmod m\)称为模\(m\)既约剩余类。模\(m\)的所有既约剩余类的个数记为\(\varphi(m)\),称为欧拉函数,也即\(\varphi(m)\)等于所有不超过\(m\)的正整数中与\(m\)互素的整数的个数,根据定义有\(\varphi(1)=\varphi(2)=1\)

同余是一个等价关系,一个等价关系确定一个划分。对于同余关系来说,它将整数划分为\(m\)个剩余类,这些剩余类满足:

  • \(\mathbb{Z}=\bigcup\limits_{r=0}^{m-1}(r\bmod m)\)
  • \((i\bmod m)\cap(j\bmod m)=\varnothing,\quad 0\le i,j<m,i\ne j\)

通常剩余类\(0\bmod m,\cdots,(m-1)\bmod m\)简记为\(\overline 0,\cdots,\overline{m-1}\)

定义2.4:模\(m\)的所有剩余类的集合记为\(\mathbb Z_m\)。在模\(m\)的每个剩余类\(\overline i\)中,任取\(a_i\in\overline i,0\le i<m\),称\(a_0,a_1,\cdots,a_{m-1}\)为模\(m\)的一个完全剩余系,当不会混淆时也简记作\(\mathbb Z_m\)。称\(0,1,2,\cdots,m-1\)为模\(m\)最小非负(完全)剩余系;称\(-[\frac{m}{2}]+1,\cdots,0,\cdots,[\frac{m}{2}]\)为模\(m\)最小绝对剩余系

定义2.5:模\(m\)的所有既约剩余类的集合记为\(\mathbb Z_m^*\)。在模\(m\)的每个既约剩余类\(\overline k_i\)中,任取\(a_i\in\overline k_i,0\le i<\varphi(m),0\le k_i<m,(k_i,m)=1\),称\(a_0,a_1,\cdots,a_{\varphi(m)-1}\)为模\(m\)的一个既约剩余系(简化剩余系),当不会混淆时也简记作\(\mathbb Z_m^*\)

举个例子加深理解。

例2.2:模\(6\)的一个完全剩余系为\(\{0,1,2,3,4,5\}\),既约剩余系为\(\{1,5\}\)\(\varphi(6)=2\)

下面的定理给出了判断构成完全剩余系和既约剩余系的充要条件,常用于证明。

定理2.9

  • \(m\)个整数组成模\(m\)的一个完全剩余系的充要条件是这\(m\)个数两两对模\(m\)不同余;
  • \(\varphi(m)\)个整数组成模\(m\)的一个既约剩余系的充要条件是这\(\varphi(m)\)个数两两对模\(m\)不同余,且都与\(m\)互素。

定理2.10

  • \(a,b\)是任意整数,且\((a,m)=1\),那么,\(x\)遍历模\(m\)的一组完全剩余系的充要条件\(ax+b\)也遍历模\(m\)的一组完全剩余系;
  • \(a,b\)是任意整数,且\((a,m)=1\),那么,\(x\)遍历模\(m\)的一组既约剩余系的充要条件\(ax+bm\)也遍历模\(m\)的一组既约剩余系。

证明

  • 由定理2.9,\(x_0,x_1,\cdots,x_{m-1}\)两两不同余,同时加一个\(b\)不影响同余,又因为\((a,m)=1\),由定理2.6的特殊情况知乘以\(a\)也不影响同余;
  • 同理乘以\(a\)不影响同余,注意加的是\(bm\),因为既约剩余系不是“连续”的,所以比上面的条件弱一点。

下面的定理需要重点理解。

定理2.11:设\(m=m_1m_2,(m_1,m_2)=1\)\(x_i^{(1)}\)遍历模\(m_1\)的完全/既约剩余系,\(x_j^{(2)}\)遍历模\(m_2\)的完全/既约剩余系的充要条件\[ x_{ij}=m_2x_i^{(1)}+m_1x_j^{(2)} \] 遍历模\(m\)的完全/既约剩余系。

证明:先证明完全剩余系的情况。\(x_{ij}\)遍历模\(m\)的完全剩余系即两两不同余,采用反证法,如果有\(x_{i_1j_1}\equiv x_{i_2j_2}\pmod m\),则它们对于\(m\)的因子\(m_1,m_2\)也同余,以\(m_1\)为例有 \[ \begin{align} x_{i_1j_1}&\equiv x_{i_2j_2}\pmod{m_1}\Leftrightarrow\\ m_2x_{i_1}^{(1)}+m_1x_{j_1}^{(2)}&\equiv m_2x_{i_2}^{(1)}+m_1x_{j_2}^{(2)}\pmod{m_1}\Leftrightarrow\\ x_{i_1}^{(1)}&\equiv x_{i_2}^{(1)}\pmod{m_1} \end{align} \] 而由\(x_i^{(1)}\)遍历模\(m_1\)的完全剩余系,\(x_i^{(1)}\)应当两两对\(m_1\)不同余,因此矛盾。

对于既约剩余系的情况,只需额外证明\((x_{ij},m)=1\),等价于证明\((x_{ij},m_1)=1\)\((x_{ij},m_2)=1\),以\(m_1\)为例,显然\(x_{ij}=m_2x_i^{(1)}+m_1x_j^{(2)}\)\(m_1\)是互素的,得证。

证明的核心是利用定理2.8,将\(m\)上的同余等价到\(m_1,m_2\)上的同余,而将\(x_{ij}\)构造为\(m_2x_i^{(1)}+m_1x_j^{(2)}\)是满足要求的。

上述定理推广如下。

定理2.12:设\(m=m_1\cdots m_k\),且\(m_1,\cdots,m_k\)两两互素。再设\(M_j=\frac{m}{m_j},1\le j\le k\)\[ x=M_1x^{(1)}+\cdots+M_kx^{(k)} \] 那么\(x\)遍历模\(m\)的完全/既约剩余系的充要条件\(x^{(1)},\cdots,x^{(k)}\)分别遍历模\(m_1,\cdots,m_k\)的完全/既约剩余系。

定理2.11和2.12说明了较大模数的完全/既约剩余系可以表示成多个较小的模的完全/既约剩余系的组合。

最后来讨论模的剩余系和因子的剩余系之间的关系。

定理2.13:设\(m_1\mid m,d=m/m_1\),那么对任意的\(r\)\[ r\bmod m\subseteq r\bmod m_1 \] 等号当且仅当\(m=m_1\)时成立。并且有 \[ r\bmod m_1=\bigcup\limits_{0\le j\le d-1}(r+jm_1)\bmod m \]

看个例子就理解了。

例2.3:设\(m=6,m_1=2,d=3,r=1\)\(r\bmod m=\{1+6k\}\)\(r\bmod m_1=\{1+2k\}\),显然\(\{1+6k\}\)\(\{1+2k\}\)的子集,并且 \[ \{1+2k\}=\{1+6k\}\cup\{3+6k\}\cup\{5+6k\} \]

注:该表示方法不准确,明白意思即可。

2.3 欧拉(Euler)定理

欧拉函数在已知因式分解的情况下可通过以下定理求值。

定理2.14

  • \(p\)是素数,\(k\ge1\),那么 \[ \varphi(p^k)=p^{k-1}(p-1) \] 特别地,\(\varphi(p)=p-1\)

  • \(m=m_1m_2\),且\((m_1,m_2)=1\),则\(\varphi(m)=\varphi(m_1)\varphi(m_2)\)

  • \(m=p_1^{\alpha_1}\cdots p_r^{\alpha_r}\),其中\(p_1,\cdots,p_r\)为不同的素因子,则 \[ \varphi(m)=p_1^{\alpha_1-1}(p_1-1)\cdots p_r^{\alpha_r-1}(p_r-1) \]

证明

  • 1到\(p^k\)中与\(p^k\)不互素的只有\(p,2p,\cdots,p^{k-1}p\),因此\(\varphi(p^k)=p^k-p^{k-1}=p^{k-1}(p-1)\)
  • 定理2.11可得。
  • 由前两条可得。

下面介绍著名的欧拉定理。

定理2.15(欧拉定理):设\((a,m)=1\),则有 \[ a^{\varphi(m)}\equiv1\pmod m \] 特别地,当\(m\)为素数\(p\)时, \[ a^{p-1}\equiv1\pmod p \] 称为费马小定理

证明

易知模\(m\)的两个不同的既约剩余系\(\{r_1,\cdots,r_{\varphi(m)}\}\)\(\{r_1',\cdots,r_{\varphi(m)}'\}\),其各元素之积模\(m\)的结果相等,即 \[ \prod_{i=1}^{\varphi(m)}r_i\equiv\prod_{i=1}^{\varphi(m)}r_i'\pmod m \] 现取模\(m\)的一个既约剩余系\(\{r_1,\cdots,r_{\varphi(m)}\}\),因为\((a,m)=1\),由定理2.10可得\(\{ar_1,\cdots,ar_{\varphi(m)}\}\)也是模\(m\)的既约剩余系,再由上述结论有 \[ \prod_{i=1}^{\varphi(m)}r_i\equiv\prod_{i=1}^{\varphi(m)}ar_i\equiv a^{\varphi(m)}\prod_{i=1}^{\varphi(m)}r_i\pmod m \] 因为\((r_i,m)=1\),所以两边可以约掉\(r_i\),得 \[ a^{\varphi(m)}\equiv1\pmod m \]

欧拉定理也可以用于求逆元,即当\((a,m)=1\)时,有\(a^{-1}\equiv a^{\varphi(m)-1}\pmod m\)

例2.4:求\(7^{101}\pmod{10}\)

\(\varphi(10)=\varphi(2)\varphi(5)=4\),由欧拉定理有\(7^4\equiv1\pmod{10}\),所以\(7^{101}\equiv7^{25\times4+1}\equiv7\pmod{10}\)

2.4 威尔逊(Wilson)定理

定理2.16(威尔逊定理):设\(p\)是素数,\(r_1,\cdots,r_{p-1}\)是模\(p\)的既约剩余系,则 \[ \prod_{r\bmod p}r\equiv r_1\cdots r_{p-1}\equiv-1\pmod p \] 特别地有 \[ (p-1)!\equiv-1\pmod p \]

证明

\(p=2\)时显然成立。设\(p\ge3\),对每个\(r_i,0<i<p\),由定理2.7必有\(r_j\)使得 \[ r_ir_j\equiv1\pmod p \] 现在有两种情况:

  • 一种是\(r_i=r_j\),那\(r_i\)取哪些值会有这种情况呢?当\(r_i=r_j\)时,有\(r_i^2\equiv1\pmod p\),即\((r_i-1)(r_i+1)\equiv0\pmod p\),因此当\(r_i\equiv1,-1\pmod p\)时是这种情况;
  • 否则\(r_i\ne r_j\),这样的\(r_i,r_j\)两两配对就可以消去。

因此只需将第一种情况的取值乘起来:\(1\times-1\equiv-1\mod p\)

定理2.17:设素数\(p\ge3\)\(c=\varphi(p^l),l\ge1\)\(r_1,\cdots,r_c\)是模\(p^l\)的既约剩余系,则 \[ r_1\cdots r_c\equiv-1\pmod{p^l} \]

证明:和上面的证明类似,\(r_i\ne r_j\)时可以两两配对消去,\(r_i=r_j\)\(r_i\equiv1,-1\pmod{p^l}\)

定理2.18:设素数\(p\ge3\)\(c=\varphi(2p^l),l\ge1\)\(r_1,\cdots,r_c\)是模\(2p^l\)的既约剩余系,则 \[ r_1\cdots r_c\equiv-1\pmod{2p^l} \]

证明

乘以2实际上不影响既约剩余类的个数,因为\(\varphi(2p^l)=\varphi(2)\varphi(p^l)=\varphi(p^l)\),这里取 \[ r_j'= \begin{cases} r_j&r_j为奇数\\ r_j+p^l&r_j为偶数 \end{cases} \] 可以发现\(r_j'\)仍是模\(p^l\)的既约剩余系,且都为奇数。因此有\(r_1'\cdots r_c'\equiv-1\pmod{p^l}\)\(r_1'\cdots r_c'\equiv-1\pmod2\),由定理2.8可得\(r_1\cdots r_c\equiv-1\pmod{2p^l}\)

总结:以上定理说明当\(m=2,4,p^l,2p^l\)\(p\)为奇素数)时,模\(m\)的既约剩余系的乘积\(r_1\cdots r_c\equiv-1\pmod m\),可以证明\(m\)取其他值的情况下\(r_1\cdots r_c\equiv1\pmod m\)

2.5 SageMath

sage: mod(5, 3)         # 求模
2
sage: inverse_mod(2, 7) # 求逆元
4
sage: pow(3, 4, 40)     # 平方取模
1
# 定义模12下的同余运算
sage: R = Zmod(12)
sage: list(R)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
sage: a = R(5)
sage: b = R(7)
sage: a + b
0
sage: a ^ (-1)
5
# 欧拉函数
sage: euler_phi(15)
8

密码学数学基础(二)同余
https://shuusui.site/blog/2024/08/21/crypto-math-2/
作者
Shuusui
发布于
2024年8月21日
更新于
2024年9月1日
许可协议