RSA算法及其数学原理

1 密钥和公钥生成过程

  • 随机找出两个不同的质数(越大越好)p,q。
  • n=p*q,根据欧拉函数,有\varphi (n)=(p-1)(q-1)
  • 随机找出一个数e,使1<e<\varphi (n)
  • 计算e对于\varphi (n)模反元素d,即找出d,使ed\equiv 1(mod\ \varphi (n))
  • (e,n)为公钥,(d,n)为密钥

2 加密和解密过程

假设待加密资料为m(必须小于n,如果大于,采用分段加密方式解决)。

加密资料:\large c\equiv m^{e}(mod\ n)

解密密文:\large m\equiv c^{d}(mod\ n)

3 数学基础

具体参考:https://blog.csdn.net/idwtwt/article/details/81125045

3.1 同余定理

如果两个整数a和b,(a-b)能被m整除,则a和b被m除的余数相同,记做

如果有\left (a-b \right )| m,则a\equiv b (mod\ b)

同余定理性质:

性质1:a≡a(mod m),(反身性)
这个性质很显然.因为a-a=0=m·0。
性质2:若a≡b(mod m),那么b≡a(mod m),(对称性)。
性质3:若a≡b(mod m),b≡c(mod m),那么a≡c(mod m),(传递性)。
性质4:若a≡b(mod m),c≡d(mod m),那么a±c≡b±d(mod m),(可加减性)。
性质5:若a≡b(mod m),c≡d(mod m),那么ac≡bd(mod m)(可乘性)。
性质6:若a≡b(mod m),那么an≡bn(mod m),(其中n为自然数)。
性质7:若ac≡bc(mod m),(c,m)=1,那么a≡b(mod m),(记号(c,m)表示c与m的最大公约数)。
性质8:若a≡b(mod m),那么a的n次方和b的n次方也对于m同余。
性质9:若a≡b(mod m)、c≡d(mod m)、e≡f(mod m)……x≡y(mod m)

3.2 幂同余定理(同余定理可乘性)

根据:

同余定理可乘性:

若a≡b(mod m),c≡d(mod m),那么ac≡bd(mod m)

另c=a,d=b,则

\bg_black \large a*a*a...a = \equiv b*b*b...b(mod\ p) => a^{k}\equiv b^{k}(mod\ p)

3.3 费马小定理

假如p是质数,且gcd(a,p)=1,即a,p互质,那么 a^{p-1}\equiv 1\left ( mod\ p \right )

3.4 欧拉定理和欧拉函数

如果两个正整数a和n互质,则:

\bg_black \LARGE a^{\varphi (n)}\equiv 1(mod\ n)

其中φ(n)称为n的欧拉函数,代表小于等于n的正整数之中,有多少个与n构成互质关系。

φ(n) 的计算方法分为四种情况:

  • 第一种情况

如果n=1,则 φ(1) = 1 。因为1与任何数(包括自身)都构成互质关系。

  • 第二种情况

如果n是质数,则 φ(n)=n-1 。因为质数与小于它的每一个数,都构成互质关系。比如5与1、2、3、4都构成互质关系。

当n为质数时,则欧拉定理退化为费马小定理,即费马小定理是欧拉定理的特殊情况。

  • 第三种情况

如果n是质数的某一个次方,即 n = p^k (p为质数,k为大于等于1的整数),则

\LARGE \varphi (p^{k})=p^{k}-p^{k-1}

比如 φ(8) = φ(2^3) =2^3 - 2^2 = 8 -4 = 4。

这是因为只有当一个数不包含质数p,才可能与n互质。而包含质数p的数一共有p^(k-1)个,即1×p、2×p、3×p、...、p^(k-1)×p,把它们去除,剩下的就是与n互质的数。

上面的式子还可以写成下面的形式:

\LARGE \varphi (p^{k})=p^{k}-p^{k-1}=p^{k}(1-\frac{1}{p})

可以看出,上面的第二种情况是 k=1 时的特例。

  • 第四种情况

如果n可以分解成两个互质的整数之积,

n = p1 × p2

φ(n) = φ(p1p2) = φ(p1)φ(p2)

即积的欧拉函数等于各个因子的欧拉函数之积。比如,φ(56)=φ(8×7)=φ(8)×φ(7)=4×6=24。

4 加密原理数学证明

证明加密的数学原理正确,需要证明:

当密文采用计算方法:\large c\equiv m^{e}(mod\ n),则资料可以通过密文和密钥解出:\large m\equiv c^{d}(mod\ n)

其中n=p*q,p,q为不相同的两个随机质数,m为需要加密的资料,m满足m<n

\large c\equiv m^{e}(mod\ n),根据同余定理知

\LARGE c=m^{e}+kn

代入\large m\equiv c^{d}(mod\ n)

\bg_black \LARGE m\equiv (m^{e}+kn)^{d}(mod\ n)

根据同余定理:

\LARGE m^{ed}-m +(kn)^{d}=hn

因为kn带有n因子,所以只能

\bg_black \LARGE m^{ed}-m整除n

所以需要证明

\LARGE m^{ed}\equiv m(mod\ n)

因为(d为e对于\varphi (n)模反元素)

\LARGE ed\equiv 1(mod\ \varphi (n))

所以需要证明:

\LARGE m^{y\varphi (n)+1}\equiv m(mod\ n)

a 如果m与n互质,根据欧拉定理:

\LARGE m^{\varphi(n)} \equiv 1(mod\ n)

又幂同余定理得和同余定理乘法定理得:

\LARGE (m^{\varphi(n)})^{y}*m \equiv 1^{y} * m (mod\ n)

\LARGE m^{y\varphi (n)+1}\equiv m(mod\ n)

得证。

b 如果m和n不是互质关系

因为m<n,m和n不是互质关系,又n=pq,p,q都为质数,

所以m必然包含p或q因子,即

m=kp或m=kq

假定m=kp,m必然与q互质(不可能同时包含因子p和因子q,否则必然不可能小于n=pq;而一个质数,另一个不为它的倍数,这两个数为互质数)

由欧拉定理得:

\LARGE m^{q-1} \equiv 1 (mod\ q)

根据幂同余定理:

\bg_black \LARGE (m^{q-1})^{y(p-1)}*m \equiv m (mod\ q)

即:

\LARGE m^{y\varphi(n)+1} \equiv m (mod \ q)

根据模反元素的定义

\LARGE ed=y*\varphi(n)+1

所以:

\LARGE m^{ed} \equiv m (mod \ q) 

根据同余定理:

\LARGE m^{ed}=tq+m

两边同时除于m

\LARGE m^{ed-1}=\frac{tq}{m}+1

左边为整数,m和q互质,则t必然包含因子m,即

\LARGE t=t'm

所以

\LARGE m^{ed} =t'mq+m = t'kpq+m=t'kn+m

所以

\LARGE m^{ed} \equiv m(mod\ n)

得证

猜你喜欢

转载自blog.csdn.net/idwtwt/article/details/81272765