在上一章中,我们探讨了整数关系的基本概念,这些工具为我们理解数字之间的关系奠定了基础。而在本章中,我们将进入一个更深层次的领域:同余关系与模运算。这些概念不仅是数论中的重要内容,也是密码学中不可或缺的工具。
同余关系和模运算为我们提供了一种新的视角来看待整数之间的关系。它们让我们能够在一个有限的范围内进行计算,这对于设计和分析加密算法来说至关重要。无论是经典的凯撒密码,还是现代的 RSA 加密算法,同余关系和模运算都在其中扮演着重要的角色。
这个章节初步认识模这个重要概念,一定要跟上哦~~~🚀
模运算与同余关系 🥰
模运算是一种数学运算,它将一个数除以另一个数,并返回余数。我们用符号
m
o
d
mod
mod 来表示模运算。设
a
=
b
q
+
r
a=bq+r
a=bq+r,其中
r
r
r 是余数,那么我们说
a
≡
r
m
o
d
b
a \\equiv r \\mod b
a≡rmodb。例如,
7
m
o
d
3
7 \\mod 3
7mod3 的结果是
1
1
1,因为
7
7
7 除以
3
3
3 的商是
2
2
2,余数是
1
1
1。
可以看出,模和整除是密切相关的。模运算可以看作是整除的一种扩展,它不仅告诉我们一个数是否能被另一个数整除,还告诉我们在不能整除的情况下,余数是什么。因此,模运算将整数映射到一个有限的范围内,这个范围由模数决定。模为数
n
n
n 定义了一个整数集合
{
0
,
1
,
2
,
…
,
n
−
1
}
\\{0, 1, 2, \\ldots, n-1\\}
{0,1,2,…,n−1},在这个集合中进行的运算称为模运算。
特殊的,负数的模运算结果也可以通过添加模数来得到。例如,
−
1
m
o
d
3
-1 \\mod 3
−1mod3 的结果是
2
2
2,因为
−
1
+
3
=
2
-1 + 3 = 2
−1+3=2。
同余关系是指两个整数在模运算下具有相同的余数。我们用符号
≡
\\equiv
≡ 来表示同余关系。例如,
7
≡
1
m
o
d
3
7 \\equiv 1 \\mod 3
7≡1mod3,因为
7
7
7 和
1
1
1 在模
3
3
3 下具有相同的余数。
同余关系具有一些重要的性质:
a
a
a,都有
a
≡
a
m
o
d
n
a \\equiv a \\mod n
a≡amodn
a
≡
b
m
o
d
n
a \\equiv b \\mod n
a≡bmodn,则
b
≡
a
m
o
d
n
b \\equiv a \\mod n
b≡amodn。
a
≡
b
m
o
d
n
a \\equiv b \\mod n
a≡bmodn 且
b
≡
c
m
o
d
n
b \\equiv c \\mod n
b≡cmodn,则
a
≡
c
m
o
d
n
a \\equiv c \\mod n
a≡cmodn
a
≡
b
m
o
d
n
a \\equiv b \\mod n
a≡bmodn 和
c
≡
d
m
o
d
n
c \\equiv d \\mod n
c≡dmodn,则
a
±
c
≡
b
±
d
m
o
d
n
a \\pm c \\equiv b \\pm d \\mod n
a±c≡b±dmodn
a
≡
b
m
o
d
n
a \\equiv b \\mod n
a≡bmodn 和
c
≡
d
m
o
d
n
c \\equiv d \\mod n
c≡dmodn,则
a
c
≡
b
d
m
o
d
n
ac \\equiv bd \\mod n
ac≡bdmodn
a
≡
b
m
o
d
n
a \\equiv b \\mod n
a≡bmodn,则对于任何非负整数
k
k
k,都有
a
k
≡
b
k
m
o
d
n
a^k \\equiv b^k \\mod n
ak≡bkmodn
逆元(模反元素) 😗
在模运算中,逆元(也称为模反元素)是指对于一个整数
a
a
a 和一个模数
n
n
n,如果存在一个整数
x
x
x 使得
a
x
≡
1
m
o
d
n
ax \\equiv 1 \\mod n
ax≡1modn,那么我们称
x
x
x 是
a
a
a 的逆元,记作
a
−
1
m
o
d
n
a^{-1} \\mod n
a−1modn。换句话说,逆元是一个数,使得它与原数的乘积在模运算下等于 1,在范围
0
0
0 到
n
−
1
n-1
n−1 之间是唯一的。
我们可以使用扩展欧几里得算法计算逆元
x
x
x。
a
x
≡
1
m
o
d
n
ax \\equiv 1 \\mod n
ax≡1modn 可以写作
a
x
=
1
+
k
n
ax = 1 + kn
ax=1+kn ,其中k是某个整数。根据裴蜀定理,存在整数
x
x
x 和
y
y
y 使得
a
x
+
n
y
=
1
ax + ny = 1
ax+ny=1 。因此,
x
x
x 就是
a
a
a 的逆元。
需要注意的是,并不是所有的整数都存在逆元。只有当
a
a
a 和
n
n
n 互质时,
a
a
a 才有逆元。这是因为如果
a
a
a 和
n
n
n 有公共因数,那么
a
x
ax
ax 将无法等于
1
1
1。
消去律与一次同余方程 🙃
消去律①是指在模运算中,如果
a
c
≡
b
c
m
o
d
n
ac \\equiv bc \\mod n
ac≡bcmodn 且
gcd
(
c
,
n
)
=
g
\\gcd(c,n) = g
gcd(c,n)=g,那么可以消去
c
c
c,得到
a
≡
b
m
o
d
n
g
a \\equiv b \\mod \\frac{n}{g}
a≡bmodgn。这个性质在解一次同余方程时非常有用。
一次同余方程的形式是
a
x
≡
b
m
o
d
n
ax \\equiv b \\mod n
ax≡bmodn。如果
gcd
(
a
,
b
)
=
1
\\gcd(a,b) = 1
gcd(a,b)=1,那么该方程有唯一解。解法是先求出
a
a
a 的逆元
a
−
1
a^{-1}
a−1,然后将方程两边同时乘以
a
−
1
a^{-1}
a−1,得到
x
≡
a
−
1
b
m
o
d
n
x \\equiv a^{-1}b \\mod n
x≡a−1bmodn。
如果
gcd
(
a
,
b
)
=
c
>
1
\\gcd(a,b) = c > 1
gcd(a,b)=c>1,
gcd
(
c
,
n
)
=
g
>
1
\\gcd(c,n) = g > 1
gcd(c,n)=g>1, 我们使用消去律将方程简化为
a
′
x
≡
b
′
m
o
d
n
′
a'x \\equiv b' \\mod n'
a′x≡b′modn′,其中
a
′
=
a
c
a' = \\frac{a}{c}
a′=ca,
b
′
=
b
c
b' = \\frac{b}{c}
b′=cb,
n
′
=
n
g
n' = \\frac{n}{g}
n′=gn。然后求出
a
′
a'
a′ 的逆元
a
′
−
1
a'^{-1}
a′−1,最后得到
x
≡
a
′
−
1
b
′
m
o
d
n
′
x \\equiv a'^{-1}b' \\mod n'
x≡a′−1b′modn′。
总而言之,先用消去律将方程简化为
a
′
x
≡
b
′
m
o
d
n
′
a'x \\equiv b' \\mod n'
a′x≡b′modn′,然后求出
a
′
a'
a′ 的逆元
a
′
−
1
a'^{-1}
a′−1,最后得到
x
≡
a
′
−
1
b
′
m
o
d
n
′
x \\equiv a'^{-1}b' \\mod n'
x≡a′−1b′modn′。
一次同余方程组与中国剩余定理 🥳
如果我们有多个同余方程需要同时满足,那么我们就需要使用中国剩余定理(Chinese Remainder Theorem)②来求解。一次同余方程组的形式是:
{
x
≡
a
1
m
o
d
n
1
x
≡
a
2
m
o
d
n
2
⋮
x
≡
a
m
m
o
d
n
m
\\begin{cases} x \\equiv a_1 \\mod n_1 \\\\ x \\equiv a_2 \\mod n_2 \\\\ \\vdots \\\\ x \\equiv a_m \\mod n_m \\end{cases}
⎩
⎨
⎧x≡a1modn1x≡a2modn2⋮x≡ammodnm
中国剩余定理告诉我们,如果
n
1
,
n
2
,
…
,
n
m
n_1, n_2, \\ldots, n_m
n1,n2,…,nm 互质,那么这个同余方程组有唯一解,并且可以通过以下步骤来求解:
N
=
∏
i
=
1
m
n
i
N = \\prod_{i=1}^{m} n_i
N=∏i=1mni。
i
i
i,计算
M
i
=
N
n
i
M_i = \\frac{N}{n_i}
Mi=niN。
i
i
i,计算
M
i
−
1
M^{-1}_i
Mi−1,使得
M
i
M
i
−
1
≡
1
m
o
d
n
i
M_i M^{-1}_i \\equiv 1 \\mod n_i
MiMi−1≡1modni。
x
x
x 可以通过以下公式计算:
x
=
∑
i
=
1
m
a
i
M
i
M
i
−
1
m
o
d
N
x = \\sum_{i=1}^{m} a_i M_i M^{-1}_i \\mod N
x=∑i=1maiMiMi−1modN
实际上,求解一次同余方程也可以用CRT(中国剩余定理)来解决,以达到当模数较大时简化计算的目的。只需要将模数n分解成互质的因数,然后将原方程转化为多个同余方程,最后使用CRT来求解即可。
威尔逊定理 😎
威尔逊定理③是数论中的一个重要定理,它给出了一个关于素数的判定方法。威尔逊定理的内容是:
p
是一个素数
⟺
(
p
−
1
)
!
≡
−
1
m
o
d
p
p 是一个素数 \\Longleftrightarrow (p-1)! \\equiv -1 \\mod p
p是一个素数⟺(p−1)!≡−1modp
这个定理在密码学中算是比较少见的,一般是用来简便运算,就不过多介绍了。
结论①②③证明 😨
本章节的定理和算法虽然比较基础,但我们来简单证明一下吧。(一定不是因为CRT比较重要和常用🤪)
结论①证明 🤐
设
g
=
gcd
(
c
,
n
)
g = \\gcd(c, n)
g=gcd(c,n),则
c
=
g
c
′
c = g c'
c=gc′ 和
n
=
g
n
′
n = g n'
n=gn′,其中
gcd
(
c
′
,
n
′
)
=
1
\\gcd(c', n') = 1
gcd(c′,n′)=1。
因为
a
c
≡
b
c
m
o
d
n
ac \\equiv bc \\mod n
ac≡bcmodn,所以
g
(
a
c
′
−
b
c
′
)
≡
0
m
o
d
g
n
′
g(ac' – bc') \\equiv 0 \\mod gn'
g(ac′−bc′)≡0modgn′,即
a
c
′
−
b
c
′
≡
0
m
o
d
n
′
ac' – bc' \\equiv 0 \\mod n'
ac′−bc′≡0modn′。
由于
gcd
(
c
′
,
n
′
)
=
1
\\gcd(c', n') = 1
gcd(c′,n′)=1,所以可以消去
c
′
c'
c′,得到
a
≡
b
m
o
d
n
′
a \\equiv b \\mod n'
a≡bmodn′。
结论②证明 💀
设
N
=
∏
i
=
1
m
n
i
N = \\prod_{i=1}^{m} n_i
N=∏i=1mni。
构造
n
1
∗
=
N
n
1
,
n
2
∗
=
N
n
2
,
…
,
n
m
∗
=
N
n
m
n^*_1 = \\frac{N}{n_1}, \\ n^*_2 = \\frac{N}{n_2}, \\ \\ldots, \\ n^*_m = \\frac{N}{n_m}
n1∗=n1N, n2∗=n2N, …, nm∗=nmN
模数
n
i
n_i
ni 与
n
i
∗
n^*_i
ni∗ 互质,因此存在逆元
t
i
t_i
ti 使得
t
1
n
1
∗
≡
1
m
o
d
n
1
,
t
2
n
2
∗
≡
1
m
o
d
n
2
,
…
,
t
m
n
m
∗
≡
1
m
o
d
n
m
t_1 n^*_1 \\equiv 1 \\mod n_1, \\ t_2 n^*_2 \\equiv 1 \\mod n_2, \\ \\ldots, \\ t_m n^*_m \\equiv 1 \\mod n_m
t1n1∗≡1modn1, t2n2∗≡1modn2, …, tmnm∗≡1modnm
我们发现
e
i
=
t
i
n
i
∗
≡
{
1
(
m
o
d
n
i
)
0
(
m
o
d
n
j
)
,
j
≠
i
e_i = t_i n_i^* \\equiv \\begin{cases} 1 \\pmod{n_i} \\\\ 0 \\pmod{n_j}, & j \\neq i \\end{cases}
ei=tini∗≡{1(modni)0(modnj),j=i
用
e
i
e_i
ei 乘以
a
i
a_i
ai,然后将它们相加,我们得到方程的一个解
x
=
∑
i
=
1
m
a
i
e
i
≡
∑
i
=
1
m
a
i
t
i
n
i
∗
m
o
d
N
x = \\sum_{i=1}^{m} a_i e_i \\equiv \\sum_{i=1}^{m} a_i t_i n^*_i \\mod N
x=i=1∑maiei≡i=1∑maitini∗modN
因为
x
x
x 里所包含的那些下标不等于
i
i
i 的单项式因为
e
e
e 的性质而在模
n
i
n_i
ni 下为
0
0
0,只留下下标等于
i
i
i 的单项式
a
i
t
i
n
i
∗
a_i t_i n^*_i
aitini∗,而
t
i
n
i
∗
≡
1
m
o
d
n
i
t_i n^*_i \\equiv 1 \\mod n_i
tini∗≡1modni,所以
x
≡
a
i
m
o
d
n
i
x \\equiv a_i \\mod n_i
x≡aimodni。
结论③证明 😵
要证明
p
p
p 是素数当且仅当
(
p
−
1
)
!
≡
−
1
m
o
d
p
(p-1)! \\equiv -1 \\mod p
(p−1)!≡−1modp,显然
p
−
1
≡
−
1
m
o
d
p
p – 1 \\equiv -1 \\mod p
p−1≡−1modp,所以即证明
(
p
−
2
)
!
≡
1
m
o
d
p
(p-2)! \\equiv 1 \\mod p
(p−2)!≡1modp。
也就是说,除去
1
1
1 后,如果
2
,
3
,
…
,
p
−
2
2, 3, \\ldots, p-2
2,3,…,p−2 能够两配对,且每对数乘积模
p
p
p 后为
1
1
1 的话,威尔逊定理就成立了,然后我们考虑这其实就是去找模
p
p
p 意义下的逆元。
考虑一下二次剩余里面的衍生知识,我们可以知道对于
x
2
≡
1
m
o
d
p
x^2 \\equiv 1 \\mod p
x2≡1modp 只有两个解
(
1
,
p
−
1
)
(1, p-1)
(1,p−1),而这两个数已经被我们安排掉了,也就是说
2
,
3
,
…
,
p
−
2
2, 3, \\ldots, p-2
2,3,…,p−2 中不存在某个数的逆元是自己本身。
那么对于集合
A
=
1
,
2
,
…
,
p
−
1
A = {1, 2, \\ldots, p-1}
A=1,2,…,p−1 中的元素,我们可以将
2
,
3
,
…
,
p
−
2
2, 3, \\ldots, p-2
2,3,…,p−2 中的元素两两配对,使得每对数的乘积模
p
p
p 后为
1
1
1,所以
(
p
−
2
)
!
≡
1
m
o
d
p
(p-2)! \\equiv 1 \\mod p
(p−2)!≡1modp。
当然,用群论的知识可以更加快速证明,集合
A
=
1
,
2
,
…
,
p
−
1
A = {1, 2, \\ldots, p-1}
A=1,2,…,p−1 是一个乘法群,每个元素都有唯一逆元。我们又将自逆元排除,所以所有元素都可以两两配对为互逆的数对,每对乘积模
p
p
p 为
1
1
1。
我的个人blog:Alice and Bobの神秘小屋



