B站密码学的数学基础

合集地址: https://www.bilibili.com/video/BV1bY411G7sY

数论

  • 主要研究整数,特别是正整数(自然数)

1【整除】

整除性(Divisibility)

  • "b|a" : 设 a,b Z ,如果存在一个 q Z ,使得 a = qb,则称 “b整除a”,记为 “b|a” (或称:b 是 a 的因子,a 是 b 的倍数,a 被 b 整除)

    • 即 b|a a = qb
  • 对于任意 a,b,c Z ,有

    • (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 Z ,都有 b|(sa ± tc )

(比较性)如果 a,b N 且 b|a,则 b a

定理:设 a,b Z ,则 b|a 且 a|b 当且仅当 a= ± b。特别地,a|1 当且仅当 a= ± 1

“b a” :b 不能整除 a( a 不能被 b 整除)

对于任何自然数,其各位上的数字相加之和如果能被 3 整除,那么这个自然数也可以被 3 整除

2【素数】

定义:设 n N 且 n 2 ,除了 1 和 n 以外,没有其他正整数整除 n ,n 称作“素数”(通常用 p 表示);否则,n 称作“合数”

  • 该定义可扩展到负整数。本课程提到素数和合数时,仅指正整数情况

  • 1 既不是素数,也不是合数

  • n 为合数,则 n = ab,其中 1 < a < n,1 < b < n

引理:任何大于 1 的整数必有素因子(任何合数(必然大于1)必有素因子)

定理:任何合数 n 都至少有一个不超过 n 的素因子。(n>1 是合数,则存在素数p,使得 p n )

  • 判断 n 是否是素数:如果所有素数 p n 都不能整除 n,则 n 是素数

算数基本定理:任何非零整数 n ,可以表示成如下的乘积形式:【 n = ± p1e1 . . . prer】,其中,p1 , . . . , pr 是互不相同的素数,e1 , . . . ,er 是正整数

  • (1)这个表示形式是唯一的(忽略 p1e1 , . . . , prer 的顺序)

  • (2)认为 ± 1 可以表示成零个素因子项相乘( r = 0 ),因为通常把零个素数相乘的结果作为 1

  • 比如 18 = 2 x 32

欧几里得定理:素数有无穷多个

3【模运算】

a mod b:设 a,b Z 且 b > 0,如果 q,r Z 满足 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 Z ,如果 d Z 且 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 Z ,如果 gcd(a , b) = 1,则称 a 和 b 互素

  • 设 gcd(a , b) = d,则存在 q1 , q2 Z ,使得 a = q1 d,b = q2 d ,且 gcd( q1 , q2 ) = 1

5【扩展的欧几里得算法】

最大公约数表示定理:设 a,b Z ,d = gcd(a , b),则 s,t Z ,使得【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 Z ,如果 m Z 分别是 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
  • 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 Z , n > 0,如果 n|(a - b),就称 a 和 b 在模 n 下同余,记作 a b (mod n)

  • 令 a = q1 n + r1 ,b = q2 n + r2 。有 a - b = ( q1 - q2 )n + ( r1 - r2 )

同余关系是等价关系

  • 自反性:对于所有 a Z ,都有 a a ( mod n )

  • 对称性:对于所有 a,b Z ,都有 a b ( mod n ) b a ( mod n )

  • 传递性:对于所有 a,b,c Z ,都有 a b ( mod n ),b c ( mod n ) a c ( mod n )

同余的运算性质

eg:15 9 ( mod 6 )

  • 15 + m 9 + m ( mod 6 ) , m Z

  • 15 - m 9 - m ( mod 6 ) , m Z

  • 15 x m 9 x m ( mod 6 ) , m Z

  • 15m 9m ( mod 6 ) , m Z

10【乘法逆元】

倒数:两个数的乘积为 1,就称这两个数互为倒数

乘法逆元(Modular inverse)

eg: ( 14 / 4 ) mod 5

= ( 7 / 2 ) mod 5

= ( 7 x 12 ) mod 5

= ( 7 x 21 ) mod 5            2 x 3 mod 5 = 1

= ( 7 x 3 ) mod 5

= 1

eg: 21 mod 7 = 4

eg: ( 38 x 35 ) mod 5

= 38+5 mod 5

= 33 mod 5

= (31)3 mod 5

= 23 mod 5

= 8 mod 5

= 3

注意1:模 n 下互为乘法逆元,一般只考虑比 n 小的,比如:模 5 下,2 的乘法逆元是 3,而不考虑 8
注意2:a 在模 n 内的乘法逆元 a1 ( 1 a1 < n ) 是唯一的,比如:模 5 下,2 和 3 互为乘法逆元,他俩再没别的逆元了
注意3:有的时候,整数会以自己为乘法逆元
注意4:乘法逆元存在的条件:gcd( a , n ) = 1 模 n 下,a 有乘法逆元,比如在模 4 下,2 就没有乘法逆元,但 3 却有。只有当一个整数和模数互素的时候,它才有相应的乘法逆元

求乘法逆元

算法:扩展的欧几里得算法

设 gcd( a , n ) = 1

根据最大公约数表示定理,有

as + tn = 1

等式两边同时模 n ,得

as 1 ( mod n )

易知,模 n 下 a 的逆元是 s

11【一次同余方程】

消去律(cancellation law)

定义(同余下的消去律):设 a,n Z ,n > 0,如果 gcd ( a , n ) = d,有 az az' ( mod n ) z z' ( mod n/d )

解释:如果 a 和 n 的最大公约数是 d,就可以把 a 从式子两边同时消掉,并把魔术变成 n 除以 d ,很明显如果最大公约数是 1 ,就直接把 a 消掉,而不需要动模数了,因为 n 除以 1 还等于 n ,除不除的没意义

eg消去律:105 63 ( mod 6 )

105 / 3 63 / 3 ( mod 6 / 3 )

35 21 ( mod 2 )

35 / 7 21 / 7 ( mod 2 )

5 3 ( mod 2 )

eg一次同余方程:105 x - 62 1 ( mod 6 )

105 x 63 ( mod 6 )

105 x / 21 63 / 21 ( mod 6 / 3 )

5 x 3 ( mod 2 )

x 3 / 5 ( mod 2 )

x 3 x 1 ( mod 2 )

x 3 ( mod 2 )

x 1 ( mod 2 )

所以 x { ... ,-3,-1,1,3,5,7,... } 或 x { 1 ± 2k , 其中 k = 0,1,2,... }

观察可以发现,模数 6 变为 2 ,6 是 2 的三倍,而解集里 0 到 5 之间,恰好有 3 个解 ,1,3 和 5 ,这不是巧合而是一个规律:【原模数为 n ,最终模数为 n‘ ,设 n / n' = d,有 0 ~ n - 1 之间解的数量恰好等于 d 】

注意:2 x 3 ( mod 6 ) 无解,因为必须要把左边的 2 消掉,但是 2 在模 6 下没有乘法逆元,右边又没有 2 的因子,所以不能两边和模数同时除掉 2 ,所以这个方程是无解的,也就是说不论 x 取哪个整数,都不能使两边满足这个同余关系
有解的条件:若 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] 的代表元

剩余类集合:Zn = { [0] , [1] , ... , [n-1] },Z5 = { [0] , [1] , [2] , [3] , [4] }

Zn = { [0] , [1 , ... , [n-1] }

[a] + [b] := [a+b]

[a] [b] := [a b]

其中 a,b Z

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 Zn ,若 uv = [1],则 u 和 v 互为乘法逆元

u 和 v 互为乘法逆元 ab 1 (mod n) 即 u (和 v) 有乘法逆元 a (和 b) 与 n 互素

集合Zn = { Zn 中有乘法逆元的剩余类} =

eg:

Z6 = {[0] , [1] , ... , [5]}

Z6 = {[1] , [5]}            【这个记号表示从 Zn 中把那些没有乘法逆元的剩余类去掉,自然就表示有乘法逆元的剩余类的集合】

注意:ZnZn 这两个集合以及相应的运算非常重要,是公钥密码学的核心

ZnZn 的关系

  • n 为素数:Zn = Zn \ {[0]}        (因为 gcd(a,n) = 1,对于 a = 1,2,... ,n-1 )

  • n 为合数:Zn Zn \ {[0]}        (因为存在 a {1, ... , n-1},使得gcd(a,n) > 1 )

华健表示方法

  • 不引起歧义的情况下,[0] 通常简写为 a

  • [0]、[1]、[2] 等,简写为0、1、2

  • [a] Zn (或Zn ) 可简写为 a Zn (或 Zn )

[a] Zn (或 a Zn),则 [a] (或 a ) 一定有乘法逆元

13【中国剩余定理】

posted @   漫天残星  阅读(534)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示