RSA数学基础

1、模运算

1.定义

模运算即求余运算。“模”是“Mod”的音译,模运算多应用于程序编写中。运用于奇偶数的判别,素数的判别,模幂运算,最大公约数的求法,凯撒密码等

例如11 Mod 2,值为1

Turbo Pascal对mod的解释是这样的:
  A Mod B=A-(A div B) * B (div含义为整除) 

对于正整数p和整数a,b,定义如下运算:
  取模运算:a % p(或a mod p),表示a除以p的余数。
  模p加法:(a + b) % p ,其结果是a+b算术和除以p的余数,也就是说,(a+b) = kp +r,则(a + b) % p = r。
  模p减法:(a-b) % p ,其结果是a-b算术差除以p的余数。
  模p乘法:(a * b) % p,其结果是 a * b算术乘法除以p的余数。

2.注意:

 1. 同余式:正整数a,b对p取模,它们的余数相同,记做 a ≡ b % p或者a ≡ b (mod p)。
 2. n % p得到结果的正负由被除数n决定,与p无关。例如:7%4 = 3, -7%4 = -3, 7%-4 = 3, -7%-4 = -3。

3.基本性质


  (1)若p|(a-b),则a≡b (% p)。例如 11 ≡ 4 (% 7), 18 ≡ 4(% 7)
  (2)(a % p)=(b % p)意味a≡b (% p)
  (3)对称性:a≡b (% p)等价于b≡a (% p)
  (4)传递性:若a≡b (% p)且b≡c (% p) ,则a≡c (% p)

4.运算规则

模运算与基本四则运算有些相似,但是除法例外。

除法规则:(a + b) % p = (a % p + b % p) % p 
  (a - b) % p = (a % p - b % p) % p 
  (a * b) % p = (a % p * b % p) % p 
  (a^b) % p = ((a % p)^b) % p 
  结合率: ((a+b) % p + c) % p = (a + (b+c) % p) % p 
  ((a*b) % p * c)% p = (a * (b*c) % p) % p 
  交换率: (a + b) % p = (b+a) % p 
  (a * b) % p = (b * a) % p 
  分配率: ((a +b)% p * c) % p = ((a * c) % p + (b * c) % p) % p 

 重要定理:若a≡b (% p),则对于任意的c,都有(a + c) ≡ (b + c) (%p);
  若a≡b (% p),则对于任意的c,都有(a * c) ≡ (b * c) (%p);
  若a≡b (% p),c≡d (% p),则 (a + c) ≡ (b + d) (%p),(a - c) ≡ (b - d) (%p),
  (a * c) ≡ (b * d) (%p),(a / c) ≡ (b / d) (%p); 
  若a≡b (% p),则对于任意的c,都有ac≡ bc (%p);

2、欧拉函数 

 1、定义

 欧拉函数φ(n)是一个定义在正整数集上得函数,φ(n)的值等于序列0,1,2,…,n-1中与n互素的数的个数。

 

2、欧拉函数的性质


1)当p是素数时,φ§=p-1。

2)欧拉函数是积性函数,但不是完全积性函数。

当且只当n可以分解成两个互质的整数之积,n = p1 × p2,则φ(n) = φ(p1p2) = φ(p1)φ(p2)

特别的,对于两个素数p,q, φ(pq)=(p-1)(q-1)。(RSA算法应用)

3)当n>2时,φ(n)都是偶数,也即φ(n)≡0(mod2)。(?)

欧拉函数和它本身不同质因数的关系:

欧拉函数: φ(N)=N{∏p|N}(1-1/p)

亦即:
φ ( N ) = N ∗ ∏ ( 1 − 1 / p ) ( P 是 数 N 的 质 因 数 ) φ(N)=N* ∏(1-1/p)(P是数N的质因数)
φ(N)=N∗∏(1−1/p)(P是数N的质因数)

如:
φ(10)=10×(1-1/2)×(1-1/5)=4; 10的质因数为2,5;
φ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8; 30的质因数为2,3,5;
φ(49)=49×(1-1/7)=42。 49的质因数为7。

3、欧拉函数相关定理以及证明

定理1:缩系与欧拉函数的关系

模数m的一组缩系含有φ(m)个数。

定理2:缩系的充要条件

若a1,…,aφ(m)是φ(m)个与m互素的整数,则a1,…,aφ(m)是模数m的一组缩系的充要条件是它们两两对模数m不同余。

定理3:缩系拓展

若(a,m)=1,x通过模数m的缩系,则ax也通过模数m的缩系。

特别说明:根据定理:整数a,b对模数m同余的充分必要条件是m|a-b.
易得,ax1≡ax2(mod m)的充分必要条件是m|ax1-ax2=a(x1-x2),
又因为,(ax,m)=1,所有当且仅当,x1≡x2(mod m),结论成立。

定理4:

设m>1,(a,m)=1,则aφ(m)≡1(mod m).
证: 设 r1,r2,…,rφ(m)是模数m的一组缩系,则由定理3,ar1,ar2,…,arφ(m)也是模数m的一组缩系,故
(ar1)(ar2)…(arφ(m))≡r1r2…rφ(m)(mod m),

aφ(m)r1r2…rφ(m)≡r1r2…rφ(m)(mod m) ①
由于
(ri,m)=1,i=1,2,…,φ(m),

(r1r2…rφ(m),m)=1. ②
根据定理:若ac≡bc(mod m),且若(m,c)则a≡b(mod m/d). 再由②和①得
aφ(m)≡1(mod m).
证完

1. 若ac≡bc(mod m),且若(m,c)则a≡b(mod m/d).
简单证明:
因为m|c(a-b),故m/d|c/d(a-b),又因(m/d,c/d)=1,便知m/d|(a-b).
证完

定理5:

若p是素数,则对于每个整数a,有ap≡a(mod p).

定理6:

设m1>0,m2>0,(m1,m2)=1,x1,x2分别通过模数m1,m2的缩系,则m2x1+m1x2通过模数m1m2的缩系.

推论: 若(m1,m2)=1,则φ(m1m2)=φ(m1)φ(m2).

定理7:欧拉函数的一般计算方法

对于一个正整数n的素数幂分解n=P1q1P2q2…Pnqn,其中,Pi为素数(1≤i≤n),则φ(n)=n(1-1/P1)…(1-1/Pn).

3、欧拉函数的应用


(一)证明相关题目


证明:设n≥1,则有∑φ(n)=n,其中d|n,d>0.

证:对于一个正整数n的素数幂分解n=P1q1P2q2…Pnqn,其中,Pi为素数(1≤i≤n),d|n。

d=∑∑…∑P1x1P2x2…Pnxn(0≤x1≤q1,0≤x2≤q2,…,0≤xn≤qn)

所以,∑φ(n)=∑∑…∑φ(P1x1P2x2…Pnxn)(0≤x1≤q1,0≤x2≤q2,…,0≤xn≤qn)

根据推论6可得
∑φ(n)=∑φ(P1x1) ∑φP2x2) … ∑φ(Pnxn) (0≤x1≤q1,0≤x2≤q2,…,0≤xn≤qn)

根据1.4.1展开得

=[1+(P1 -1)+(P12-P1)…(P1q1-P1q1-1)]
[1+(P2 -1)+(P22-P2)…(P2q2-P2q2-1)]

[1+(Pn -1)+(Pn2-Pn)…(Pnqn-Pnqn-1)]
=P1q1P2q2…Pnqn
=n
证完

(二)求原根个数以及全部原根


1. 原根个数
若模m有原根,则原根共有φ(φ(m))个。

2. 全部原根
特别地,若m=p为素数,则模p共有φ(p-1)个原根,并且若g为模p的一个原根,则模p的全部原根为{gk|1≤k≤φ( p ),(φ( p ), k)=1}。

(三)RSA算法


RSA算法的具体描述如下:
(1)任意选取两个不同的大素数p和q计算乘积n=pq,φ(n)=(p-1)(q-1) ;

(2)任意选取一个大整数e,满足gcd(e,φ(n))=1 ,整数e用做加密钥(注意:e的选取是很容易的,例如,所有大于p和q的素数都可用);

(3)确定的解密钥d,满足 (de)modφ(n)=1,即de=kφ(n)+1,k≥1 是一个任意的整数;所以,若知道e和φ(n),则很容易计算出d;

(4)公开整数n和e,秘密保存d;

(5)将明文m(m<n是一个整数)加密成密文c,加密算法为

c=E(m)=memodn

(6)将密文c解密为明文m,解密算法为

m=D( c )=cdmodn

  然而只根据n和e(注意:不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密 。

3、同余式

1、定义

如果对于整数 m 和两个整数 a和 b,如果存在((a-b)mod)=0,就称a 和 b是同余的,记为a≡b(mod m)。

2、同余类(剩余类)

一个整数被 m整除之后的余数,有 0~ m-1 这m种情况,如果把所有整数按照余数的不同进行分类,可以的分成不相交的m个子集,把对m同余的所有数构成一个集合,叫做m的一个同余类(剩余类)。

1.整数根据对m的同余关系,可以构成一个划分
2.对给定的模m的运算,整数的同余关系是一个等价关系
集合A中元素的等价关系的一些性质,用 ~ 来表示
(1)自反性:对A中任意元素:a~a
(2)对称性:对于任意的a,b属于A,若a ~ b,则有b~a
(3)传递性:对于a,b,c,属于A,若a ~ b,b~c,则a ~c

完全剩余系
对于整数m, 有 r0, r1, r2, …, rm−2, rm−1 个同余类,且两两模m不同余,这些类的同余类组成的集合叫做完全剩余系
简化剩余系
1.m的完全剩余系中,与m互素的同余类元素,且他们两两不同余,称为模m的简化剩余系
2.简化剩余系中的同余类个数称为欧拉函数
简化剩余系关于模m乘法封闭(所乘的东西都还是在一个体系中未与外界有联系)
证明:若有 a,b(0≤a,b<m),且 GCD(a,m)=GCD(b,m)=1,因为 a,b
与m都无相同因子,故 a*b 与m 也没有相同因子,即他们也互质,所以
a∗b mod m 也属于m的简化剩余系。

3、同余式的性质

 自反性:a≡a(% p)

 对称性:a≡b(% p) → b≡a(% p)

 传递性:(a≡b(% p), b≡c(% p)) → a≡c(% p)

 消去律:ac≡bc(% p) → a≡b(% p/GCD(c,p) )

(理解一下:相当于排掉了 两个数共同因数的对p的质数)

 a≡b(% cd) → a≡b(% d)

(理解:a,b对一个数同余,那么他们对那个数的因数也同余)

(a≡b(% d),a≡b(% c)) → a≡b(% LCM(c,d))

 若a≡b (% p),则对于任意的c,都有 (a + c) ≡ (b + c) (%p)

 若a≡b (% p),则对于任意的c,都有 (a * c) ≡ (b * c) (%p)

 若a≡b (% p),则对于任意的c,都有 (a的c次方) ≡ (b的c次方) (%p)

(觉得与上面那个模运算类似)

 若a≡b (% p),c≡d (% p),则 (a +c) ≡ (b +d) (%p),(a - c) ≡ (b - d) (%p),(a * c) ≡ (b * d) (%p)

算术运算与同余可以交换次序

4、逆元

1、逆元的定义

若整数a、b满足同余方程a∗b≡1(mod n) ,那么a,b互为模n意义下的逆元

注意,a和b一定都和n互质,如果不互质,则逆元不存在

2、逆元的用处:

计算a / b(mod p ) 的值时,如果 b 是一个很大的数,那么会爆double的精度;假设除数 b 的逆元为 inv[b] ,那么可做如下转换

a / b (mod p)≡  a * inv[b] ( mod p )

把除法转变成了乘法,避免的精度的损失

3、性质

当p为素数,则 1~p-1 的所有整数的 模p逆元 对应1~p-1的所有整数,既是单射也是满射。

例如,当p=7时,1~6 对应的 模7逆元 分别是 1,4,5,2,3,6

4、求法

快速幂求逆元
快速幂求逆元的前提是费马小定理的成立:

费马小定理

在模数p为素数的前提下,a^(p−1)≡ 1 (mod p) 

将费马小定理变形一下 ——》  a^(p−2)−2 * a ≡1 (mod p)

由此可得,a的逆元就是 a^(p−2)−2 (mod p) 

所以,用快速幂求出ap−2��−2的结果就行了;

扩展欧几里得求逆元

推出:ax + by =  1  (注意:前提gcd(a,b) == 1)

 然后用扩欧解方程即可,得出来的 x 就是 a 在mod p 意义下的逆元

欧拉函数求逆元
 

欧拉定理:若 a 和 p 互素 ,设Φ(p) 为小于p且与p互素的正整数的个数,则有 aφ(p)≡1(modp)
 

得出 aφ(p)−1

 就是 a 在mod p 意义下的逆元

线性递推求逆元:
递推公式:

inv[1] = 1
inv[i] = (p-p/i) * inv[p%i] % p  (i>=2开始递推)

  • 34
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值