1 密钥和公钥生成过程
- 随机找出两个不同的质数(越大越好)p,q。
- n=p*q,根据欧拉函数,有
- 随机找出一个数e,使
- 计算e对于模反元素d,即找出d,使
- (e,n)为公钥,(d,n)为密钥
2 加密和解密过程
假设待加密资料为m(必须小于n,如果大于,采用分段加密方式解决)。
加密资料:
解密密文:
3 数学基础
具体参考:https://blog.csdn.net/idwtwt/article/details/81125045
3.1 同余定理
如果两个整数a和b,(a-b)能被m整除,则a和b被m除的余数相同,记做
如果有,则
同余定理性质:
性质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,则
3.3 费马小定理
假如p是质数,且gcd(a,p)=1,即a,p互质,那么
3.4 欧拉定理和欧拉函数
如果两个正整数a和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的整数),则
比如 φ(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互质的数。
上面的式子还可以写成下面的形式:
可以看出,上面的第二种情况是 k=1 时的特例。
- 第四种情况
如果n可以分解成两个互质的整数之积,
n = p1 × p2
则
φ(n) = φ(p1p2) = φ(p1)φ(p2)
即积的欧拉函数等于各个因子的欧拉函数之积。比如,φ(56)=φ(8×7)=φ(8)×φ(7)=4×6=24。
4 加密原理数学证明
证明加密的数学原理正确,需要证明:
当密文采用计算方法:,则资料可以通过密文和密钥解出:
其中n=p*q,p,q为不相同的两个随机质数,m为需要加密的资料,m满足m<n
由,根据同余定理知
代入得
根据同余定理:
因为kn带有n因子,所以只能
整除n
所以需要证明
因为(d为e对于模反元素)
所以需要证明:
a 如果m与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;而一个质数,另一个不为它的倍数,这两个数为互质数)
由欧拉定理得:
根据幂同余定理:
即:
根据模反元素的定义
所以:
根据同余定理:
两边同时除于m
左边为整数,m和q互质,则t必然包含因子m,即
所以
所以
得证