B站密码学的数学基础
合集地址: https://www.bilibili.com/video/BV1bY411G7sY
数论
- 主要研究整数,特别是正整数(自然数)
1【整除】
整除性(Divisibility)
-
"b|a" : 设 a,b
,如果存在一个 q ,使得 a = qb,则称 “b整除a”,记为 “b|a” (或称:b 是 a 的因子,a 是 b 的倍数,a 被 b 整除)- 即 b|a
a = qb
- 即 b|a
-
对于任意 a,b,c
,有-
(1)b|0
-
(2)1|a
-
(3)0|a
a = 0 -
(4)b|a
b|-a -b|a
-
(自反性)a|a
(传递性)b|a 且 a|c,则 b|c
(相乘性)b|a,则 bc|ac
(消去性)bc|ac 且 c 0,则 b|a
- 要求 c
0。比如 0x3 = 0x5 = 0,所以 0x3 | 0x5,但同时消去0,就变成 3|5,就不对了
(线性性)b|a 且 b|c,对于所有 s,t ,都有 b|(sa tc )
(比较性)如果 a,b 且 b|a,则 b a
定理:设 a,b ,则 b|a 且 a|b 当且仅当 a= b。特别地,a|1 当且仅当 a= 1
“b a” :b 不能整除 a( a 不能被 b 整除)
对于任何自然数,其各位上的数字相加之和如果能被 3 整除,那么这个自然数也可以被 3 整除
2【素数】
定义:设 n 且 n 2 ,除了 1 和 n 以外,没有其他正整数整除 n ,n 称作“素数”(通常用 p 表示);否则,n 称作“合数”
-
该定义可扩展到负整数。本课程提到素数和合数时,仅指正整数情况
-
1 既不是素数,也不是合数
-
n 为合数,则 n = ab,其中 1 < a < n,1 < b < n
引理:任何大于 1 的整数必有素因子(任何合数(必然大于1)必有素因子)
定理:任何合数 n 都至少有一个不超过 的素因子。(n>1 是合数,则存在素数p,使得 p )
- 判断 n 是否是素数:如果所有素数 p
都不能整除 n,则 n 是素数
算数基本定理:任何非零整数 n ,可以表示成如下的乘积形式:【 n = . . . 】,其中, , . . . , 是互不相同的素数, , . . . , 是正整数
-
(1)这个表示形式是唯一的(忽略
, . . . , 的顺序) -
(2)认为
1 可以表示成零个素因子项相乘( r = 0 ),因为通常把零个素数相乘的结果作为 1 -
比如 18 = 2 x
欧几里得定理:素数有无穷多个
3【模运算】
a mod b:设 a,b 且 b > 0,如果 q,r 满足 a = qb + r,且 0 r < b,则定义:a mod b := r
- -13 mod 7 = -6 mod 7 = 1 mod 7 = 1
模运算的性质
-
b|a
a mod b = 0 -
(a + b) mod n = (a mod n + b mod n) mod n
-
(a - b) mod n = (a mod n - b mod n) mod n
-
(a x b) mod n = (a mod n x b mod n) mod n
-
没有 除
4【最大公约数】
最大公约数:设 a,b ,如果 d 且 d|a,d|b,则称 d 是 a 和 b 的公因子(公约数)。如果 d 0,且 a 和 b 的所有公因子都整除 d,则称 d 是 a 和 b 的最大公约数,记作 gcd(a , b)
-
12 和 18 的公因子:
1、 2、 3、 6 -
gcd(12 , 18) = 6
-
PS1:公因子可以是任意整数(包括0、负整数)
-
PS2:最大公约数只能是 0 或正整数,不能是负的
互素:设 a,b ,如果 gcd(a , b) = 1,则称 a 和 b 互素
- 设 gcd(a , b) = d,则存在
, ,使得 a = d,b = d ,且 gcd( , ) = 1
5【扩展的欧几里得算法】
最大公约数表示定理:设 a,b ,d = gcd(a , b),则 s,t ,使得【as + bt = d】
-
特别地:gcd(a , b) = 1
as + bt = 1 -
推论:d|v
as + bt + v
扩展的欧几里得算法(又译作“广义欧几里得算法”)(Extended Euclidean Algorithm)
- 用途:计算 as + bt = gcd(a , b) 中的 s 和 t
6【最小公倍数】
公倍数:设 a,b ,如果 m 分别是 a 和 b 的倍数,m 称作 a 和 b 的公倍数
-
lcm(a , b):a 和 b 的最小公倍数
-
a,b
0:m 是 a 和 b 所有 正的 公倍数中最小,m 叫作 a 和 b 的最小公倍数 -
a = 0 或 b = 0:lcm(a , b) = 0
最小公倍数(Least Common Multiple)
-
设 m = lcm(a , b) ,如果 a|c,b|c,则 m|c
- 举例:12 和 18 的公倍数 = {
36, 72,. . . },则 lcm(12 , 18) = 36
- 举例:12 和 18 的公倍数 = {
-
gcd(a , b) = 1
lcm(a , b) = ab-
举例:gcd(3 , 5) = 1
lcm(3 , 5) = 15 -
一个很明显的性质是,如果 a 和 b 是互素的正整数,那么他俩的最小公倍数就是 a x b
-
小学学的!!!:lcm(a , b) = ab / gcd(a , b)【此算法计算机需要乘除运算速度较慢,下面的算法只需要加减即可,速度更快】
-
更快求得最小公倍数的算法:举例 4 和 6
-
第一步,挑出 4 和 6 中较小的数字 4
-
第二步,4 加 4自己得到 8
-
第三步,挑出 8 和 6 中较小的数字 6
-
第四步,6 加 6自己得到 12
-
第五步,挑出8 和 12 中较小的数字 8
-
第六步,8 加 4自己得到 12
-
第七步,至此,都等于 12,算法停止
-
-
7【证明算数基本定理】
略
8【等价关系】
等价关系
-
定义:设集合 S ,定义在 S 上的二元关系 R 。如果 R 满足一下性质,则称它为“等价关系”
-
自反性:对于所有 a
S,都有 (a,a) R -
对称性:对于所有 a,b
S,都有 (a , b) R (b , a) R -
传递性:对于所有 a,b,c
S,都有 (a , b) R,(b , c) R R
-
-
如果定义在 S 上的二元关系 “~” 满足一下性质,则称它为 “等价关系” :对于所有 a,b,c
S,有:-
自反性:x ~ x
-
对称性:x ~ y
y ~ x -
传递性:x ~ y,y ~ z
x ~ z
-
9【同余】
概念:a b (mod n):设 n 为正整数,整数 a 和 b 分别模 n ,如果得到相同的余数,就称 a 和 b 在模 n 下满足同余关系(congruence relation),简称同余
-
mod 的意义不同
-
a
b(mod n)表示一种关系 -
a mod b 表示一种运算
-
定义(同余关系):设 a,b,n , n > 0,如果 n|(a - b),就称 a 和 b 在模 n 下同余,记作 a b (mod n)
- 令 a =
n + ,b = n + 。有 a - b = ( - )n + ( - )
同余关系是等价关系
-
自反性:对于所有 a
,都有 a a ( mod n ) -
对称性:对于所有 a,b
,都有 a b ( mod n ) b a ( mod n ) -
传递性:对于所有 a,b,c
,都有 a b ( mod n ),b c ( mod n ) a c ( mod n )
同余的运算性质
eg:15
-
15 + m
9 + m ( mod 6 ) , m -
15 - m
9 - m ( mod 6 ) , m -
15 x m
9 x m ( mod 6 ) , m -
( mod 6 ) , m
10【乘法逆元】
倒数:两个数的乘积为 1,就称这两个数互为倒数
乘法逆元(Modular inverse)
eg: ( 14 / 4 ) mod 5
= ( 7 / 2 ) mod 5
= ( 7 x
= ( 7 x
= ( 7 x 3 ) mod 5
= 1
eg:
eg: (
=
=
=
=
= 8 mod 5
= 3
注意1:模 n 下互为乘法逆元,一般只考虑比 n 小的,比如:模 5 下,2 的乘法逆元是 3,而不考虑 8
注意2:a 在模 n 内的乘法逆元 ( 1 < n ) 是唯一的,比如:模 5 下,2 和 3 互为乘法逆元,他俩再没别的逆元了
注意3:有的时候,整数会以自己为乘法逆元
注意4:乘法逆元存在的条件:gcd( a , n ) = 1 模 n 下,a 有乘法逆元,比如在模 4 下,2 就没有乘法逆元,但 3 却有。只有当一个整数和模数互素的时候,它才有相应的乘法逆元
求乘法逆元
算法:扩展的欧几里得算法
设 gcd( a , n ) = 1
根据最大公约数表示定理,有
as + tn = 1
等式两边同时模 n ,得
as
易知,模 n 下 a 的逆元是 s
11【一次同余方程】
消去律(cancellation law)
定义(同余下的消去律):设 a,n
解释:如果 a 和 n 的最大公约数是 d,就可以把 a 从式子两边同时消掉,并把魔术变成 n 除以 d ,很明显如果最大公约数是 1 ,就直接把 a 消掉,而不需要动模数了,因为 n 除以 1 还等于 n ,除不除的没意义
eg消去律:105
105 / 3
35
35 / 7
5
eg一次同余方程:105
105
105
5
所以
观察可以发现,模数 6 变为 2 ,6 是 2 的三倍,而解集里 0 到 5 之间,恰好有 3 个解 ,1,3 和 5 ,这不是巧合而是一个规律:【原模数为 n ,最终模数为 n‘ ,设 n / n' = d,有 0 ~ n - 1 之间解的数量恰好等于 d 】
注意:2 3 ( mod 6 ) 无解,因为必须要把左边的 2 消掉,但是 2 在模 6 下没有乘法逆元,右边又没有 2 的因子,所以不能两边和模数同时除掉 2 ,所以这个方程是无解的,也就是说不论 取哪个整数,都不能使两边满足这个同余关系
有解的条件:若 gcd( a, n ) = d,则:ax b ( mod n ) 有解 d|b
12【剩余类】
等价类:设 ~ 是集合 S 上的等价关系,对于 a S ,定义其等价类为 { x S | x ~ a } ... 余数为 n-1:
剩余类(Residue class):设 a Z ,定义其剩余类为{ x Z | x a ( mod n ) }
剩余类就是一种等价类
集合 S 上的所有等价类形成 S 的一个划分:
-
S 中每个元素必存在于唯一的等价类中
-
所有等价类的并集恰好就是 S
剩余类里的每个整数都叫做这个剩余类的代表元(representative)。比如:-10,-5,0,5,10等,都是 [0] 的代表元
剩余类集合:
[a] + [b] := [a+b]
[a]
其中 a,b
eg:
模 6 下:[3] + [4] = [3 + 4] = [7] = [7 mod 6] = [1]
( [3] + [4] ) x [5] = [(3 + 4) x 5] = [35] = [35 mod 6] = [5]
设 u,v ,若 uv = [1],则 u 和 v 互为乘法逆元
u 和 v 互为乘法逆元
集合 = { 中有乘法逆元的剩余类} =
eg:
注意: 和 这两个集合以及相应的运算非常重要,是公钥密码学的核心
和 的关系
-
n 为素数:
= \ {[0]} (因为 gcd(a,n) = 1,对于 a = 1,2,... ,n-1 ) -
n 为合数:
\ {[0]} (因为存在 a {1, ... , n-1},使得gcd(a,n) > 1 )
华健表示方法
-
不引起歧义的情况下,[0] 通常简写为 a
-
[0]、[1]、[2] 等,简写为0、1、2
-
[a]
(或 ) 可简写为 a (或 )
[a]
13【中国剩余定理】
本文作者:漫天残星,若转载请注明原文链接:https://www.cnblogs.com/juzi2333/p/16566664.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效