文章目录
1.模算术
-
模算术,也称为同余算术,是数学中一个重要的概念,特别是在数论、密码学、计算机科学和抽象代数中。模算术的基本思想是考虑整数在模 n n n下的等价类,其中 n n n是一个正整数。下面列出了一些模算术的关键性质,这些性质使得模算术成为处理整数问题时一个非常强大的工具,尤其是在需要考虑循环和周期性行为的场景中:
-
同余关系
如果两个整数 a a a和 b b b在模 n n n下同余,我们写作 a ≡ b m o d n a \equiv b \mod n a≡bmodn,这意味着 n n n整除 a − b a-b a−b。换句话说, a a a和 b b b在除以 n n n后有相同的余数。
1.1 等价关系
-
同余的传递性
如果 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,那么 b ≡ a m o d n b \equiv a \mod n b≡amodn。 -
同余的反身性
对于任何整数 a a a,有 a ≡ a m o d n a \equiv a \mod n a≡amodn。
1.2 整数环 Z m = { 0 , 1 , 2 , … , m − 1 } Z_m=\{0,1,2,…,m-1\} Zm={0,1,2,…,m−1}
- Z m Z_{m} Zm集合指的是模 m m m意义下的整数(即加法和乘法运算都是模 m+1 的运算)
加法和乘法运算
- 加法 a , b ∈ Z m a,b∈Z_m a,b∈Zm, a + b = c m o d m , c ∈ Z m a+b=c \ mod \ m,c\in Z_m a+b=c mod m,c∈Zm
- 乘法
a
,
b
∈
Z
m
a,b∈Z_m
a,b∈Zm,
a
×
b
=
d
m
o
d
m
,
d
∈
Z
m
a\times b=d \ mod \ m,d\in Z_m
a×b=d mod m,d∈Zm
加法成Abel群
- 运算封闭:如果 a ≡ b m o d m a \equiv b \mod m a≡bmodm和 c ≡ d m o d m c \equiv d \mod m c≡dmodm,那么 a + c ≡ b + d m o d m a + c \equiv b + d \mod m a+c≡b+dmodm
- 结合律: ( a + b ) + c = a + ( b + c ) (a+b)+c = a+(b+c) (a+b)+c=a+(b+c)成立
- 单位元 :0
- 逆元:如果 a + b m o d m = 0 a+b \ mod \ m =0 a+b mod m=0 ,则a,b互为逆元
- 交换律:加法交换律, a + b ( m o d n ) = b + a ( m o d n ) a+b (mod \ n) = b+a (mod \ n) a+b(mod n)=b+a(mod n)
乘法成幺半群
- 运算在整数集合封闭:如果 a ≡ b m o d m a \equiv b \mod m a≡bmodm和 c ≡ d m o d m c \equiv d \mod m c≡dmodm,那么 a c ≡ b d m o d m ac \equiv bd \mod m ac≡bdmodm
- 结合律 : ( a × b ) × c = a × ( b × c ) (a\times b)\times c = a\times (b\times c) (a×b)×c=a×(b×c)成立
- 单位元: 1
- 注:其实也满足交换律
乘法对加法的分配性
- 有 a × ( b + c ) = ( a × b ) + ( a × c ) 和 ( b + c ) × a = ( b × a ) + ( c × a ) a×(b+c)=(a×b)+(a×c) 和 (b+c)×a=(b×a)+(c×a) a×(b+c)=(a×b)+(a×c)和(b+c)×a=(b×a)+(c×a)成立。
1.3 模算术的幂运算
- 如果 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。
1.4 欧拉定理
- 如果整数 a a a和 n n n互质,且 a a a 和 n n n互素(即 g c d ( a , n ) = 1 gcd(a, n) = 1 gcd(a,n)=1),那么 a ϕ ( n ) ≡ 1 m o d n a^{\phi(n)} \equiv 1 \mod n aϕ(n)≡1modn,其中 ϕ ( n ) \phi(n) ϕ(n)是欧拉函数,表示小于 n n n且与 n n n互质的正整数的个数。
证明过程甲:
我们将通过数论中的几个重要概念和定理来证明欧拉定理。
欧拉函数
- 首先,欧拉函数
ϕ
(
n
)
\phi(n)
ϕ(n) 是小于
n
n
n且与
n
n
n互素的正整数的个数。例如:
ϕ ( 12 ) = 4 \phi(12) = 4 ϕ(12)=4因为小于 12 且与 12 互素的数是 1, 5, 7, 和 11。
群论的概念
- 考虑整数模 n n n 的乘法群,即由所有与 n n n 互素的整数模 n n n 所组成的集合。这些整数在模 n n n 意义下构成一个群,其阶为 ϕ ( n ) \phi(n) ϕ(n)。
拉格朗日定理
- 拉格朗日定理告诉我们,如果 G G G 是一个有限群,且 H H H 是 G G G 的子群,那么 H H H 的阶(即元素个数)整除 G G G 的阶。因此,对于群 G G G中的任意元素 g g g,有 g ∣ H ∣ = e g^{|H|} = e g∣H∣=e,其中 e e e是群 G G G 的单位元。
证明:
-
设 G ( n ) G(n) G(n)是整数模 n n n意义下与 n n n 互素的整数所构成的群 G G G,其阶为 ϕ ( n ) \phi(n) ϕ(n)。对于 a ∈ U ( n ) a \in U(n) a∈U(n):
- G ( n ) G(n) G(n) 是一个有限的乘法群,且 a ∈ G ( n ) a \in G(n) a∈G(n)。
- 根据拉格朗日定理,群中每个元素 a a a 的阶必须整除群的阶 ϕ ( n ) \phi(n) ϕ(n)。
- 因此,对
a
∈
G
(
n
)
a \in G(n)
a∈G(n),存在正整数
k
k
k 使得:
a k = e a^k = e ak=e
其中 e e e是单位元。在模 n n n 意义下,这意味着:
a ϕ ( n ) ≡ 1 ( m o d n ) a^{\phi(n)} \equiv 1 \pmod{n} aϕ(n)≡1(modn)
证明过程乙:
构造集合S:
- 是所有小于 n n n且与 n n n 互质的整数集合 S = { x 1 , x 2 , … , x ϕ ( n ) } S = \{ x_1, x_2, \dots, x_{\phi(n)}\} S={x1,x2,…,xϕ(n)}
构造集合T:
-
考虑集合 T = { a ⋅ x 1 , a ⋅ x 2 , … , a ⋅ x ϕ ( n ) } T = \{a \cdot x_1, a \cdot x_2, \dots, a \cdot x_{\phi(n)}\} T={a⋅x1,a⋅x2,…,a⋅xϕ(n)} 模 n n n 的结果,其中 a a a是与 n n n 互质的整数。
-
重要条件
:因为 gcd ( a , n ) = 1 \gcd(a, n) = 1 gcd(a,n)=1,所以集合 T T T 中的每个元素 a ⋅ x i a \cdot x_i a⋅xi都是与 n n n互质的,并且 T T T中的每个元素都在集合 S S S中的某个元素模 n n n 的剩余类(等价类)中。 -
证明 T T T 是 S S S 的置换:
- 集合 T T T 中的所有元素都是 S S S 的元素。由于 T T T 中的元素个数与 S S S 相同,且 T T T 中的元素互不相同(因为如果 a ⋅ x i ≡ a ⋅ x j ( m o d n ) a \cdot x_i \equiv a \cdot x_j \pmod{n} a⋅xi≡a⋅xj(modn),那么 x i ≡ x j ( m o d n ) x_i \equiv x_j \pmod{n} xi≡xj(modn)由于 gcd ( a , n ) = 1 \gcd(a, n) = 1 gcd(a,n)=1),因此 T T T 是 S S S 的一个置换。
比较积:
- 由于
T
T
T 是
S
S
S 的一个置换,因此两个集合的乘积是模
n
n
n 同余的:
( a ⋅ x 1 ) ⋅ ( a ⋅ x 2 ) ⋅ ⋯ ⋅ ( a ⋅ x ϕ ( n ) ) ≡ x 1 ⋅ x 2 ⋅ ⋯ ⋅ x ϕ ( n ) ( m o d n ) . (a \cdot x_1) \cdot (a \cdot x_2) \cdot \dots \cdot (a \cdot x_{\phi(n)}) \equiv x_1 \cdot x_2 \cdot \dots \cdot x_{\phi(n)} \pmod{n}. (a⋅x1)⋅(a⋅x2)⋅⋯⋅(a⋅xϕ(n))≡x1⋅x2⋅⋯⋅xϕ(n)(modn). - 将左侧的乘积展开,得到:
a ϕ ( n ) ⋅ ( x 1 ⋅ x 2 ⋅ ⋯ ⋅ x ϕ ( n ) ) ≡ x 1 ⋅ x 2 ⋅ ⋯ ⋅ x ϕ ( n ) ( m o d n ) . a^{\phi(n)} \cdot (x_1 \cdot x_2 \cdot \dots \cdot x_{\phi(n)}) \equiv x_1 \cdot x_2 \cdot \dots \cdot x_{\phi(n)} \pmod{n}. aϕ(n)⋅(x1⋅x2⋅⋯⋅xϕ(n))≡x1⋅x2⋅⋯⋅xϕ(n)(modn). - 由于
x
1
,
x
2
,
…
,
x
ϕ
(
n
)
x_1, x_2, \dots, x_{\phi(n)}
x1,x2,…,xϕ(n)互质于
n
n
n,因此可以在模
n
n
n 下消去这个乘积:
a ϕ ( n ) ≡ 1 ( m o d n ) . a^{\phi(n)} \equiv 1 \pmod{n}. aϕ(n)≡1(modn).
2. RSA算法
- RSA算法是一种非对称加密算法,广泛应用于安全通信、数字签名等领域。它的名称来自于发明者Ron Rivest、Adi Shamir和Leonard Adleman的首字母。RSA算法的核心思想基于大整数分解的数学难题,尤其是质因数分解的难度。RSA的安全性依赖于大整数的质因数分解难度。对于足够大的 n n n,即使知道公钥 ( e , n ) (e, n) (e,n),要想通过暴力手段破解私钥 d d d 几乎是不可能的,因为这需要对 n n n 进行质因数分解,而这在目前的计算能力下是不可行的。
2.1 RSA算法的工作原理:
-
密钥生成:
-
选择两个大质数 p p p 和 q q q,然后计算它们的乘积 n = p × q n = p \times q n=p×q。$ n $ 会成为公钥和私钥的一部分。
-
计算 n n n 的欧拉函数值: ϕ ( n ) = ( p − 1 ) × ( q − 1 ) \phi(n) = (p-1) \times (q-1) ϕ(n)=(p−1)×(q−1)用来生成密钥。
-
选择一个整数 e e e,满足 1 < e < ϕ ( n ) 1 < e < \phi(n) 1<e<ϕ(n) 且 e e e 与 ϕ ( n ) \phi(n) ϕ(n) 互质。这个 e e e 是加密的公钥指数。
-
通过求解 d × e ≡ 1 ( mod ϕ ( n ) ) d \times e \equiv 1 \ (\text{mod} \ \phi(n)) d×e≡1 (mod ϕ(n)) 来找到 d d d,即 d d d 是 e e e 的模 ϕ ( n ) \phi(n) ϕ(n) 的乘法逆元。这个 d d d 是解密的私钥指数。
-
公钥: ( e , n ) (e, n) (e,n)
-
私钥: ( d , n ) (d, n) (d,n)
-
-
加密:
- 发送方使用接收方的公钥
(
e
,
n
)
(e, n)
(e,n) 对消息
m
m
m 进行加密,计算密文
c
c
c:
c = m e mod n c = m^e \ \text{mod} \ n c=me mod n - 加密后的密文 c c c 可以公开发送。
- 发送方使用接收方的公钥
(
e
,
n
)
(e, n)
(e,n) 对消息
m
m
m 进行加密,计算密文
c
c
c:
-
解密:
- 接收方使用自己的私钥
(
d
,
n
)
(d, n)
(d,n) 对密文
c
c
c 进行解密,恢复原始消息
m
m
m:
m = c d mod n m = c^d \ \text{mod} \ n m=cd mod n - 由于私钥只有接收方知道,只有接收方可以解密密文并恢复原始信息。
- 接收方使用自己的私钥
(
d
,
n
)
(d, n)
(d,n) 对密文
c
c
c 进行解密,恢复原始消息
m
m
m: