RSA非对称加密算法的原理

来源:互联网 发布:淘宝金丝绒裙子 编辑:程序博客网 时间:2024/05/17 00:56

RSA非对称加密算法的原理:

p,q为两个大素数,令n=pq ,则φ(n)=(p1)(q1)

取正整数e,满足条件(φ(n),e)=1,1<e<φ(n),

则存在整数d为e的逆元,表达式为:

ed1(modφ(n))

即存在整数k使得ed=kφ(n)+1

设明文为a,密文为c,加密式为aec(modn),解密式为cda(modn)根据欧拉定理有:

aφ(p)1(modp)

经由如下变换:
aφ(p)kφ(n)φ(p)1(modp)

akφ(n)+1a(modp)

aeda(modp)

cda(modp)

同理可得:
cda(modq)

因为p,q 为素数,所以
cda(modn)

至此,RSA算法的原理就明了了,我的疑问在于,选取密钥e的时候,为什么条件是让(e,φ(n))=1,而不是让e和别的数互素?

问题就处在※这一行,为了保证公式能够推导下去,必须满足条件kxφ(p) 是一个整数,所以x=n 是绝对不行的。我一开始认为,x可以随意选取别的整数,而实际上,确实只要xφ(p)的整数倍就没有问题,但是RSA作为一个算法,在方法上要有一套自己的模板。刚好,无论p 是多大,φ(n) 总会是φ(p)的倍数,而且φ(n) 很大,同时给予了密钥很大的选择空间。