RSA加密算法原理

来源:互联网 发布:在国内使用io域名 编辑:程序博客网 时间:2024/05/28 04:56

RSA简介

RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。

算法描述

随机选取两个大 的素数p和q,n = p×q
φ(n)=(q1)(p1)
找到一个在[1,φ(n)] 之间的数egcd(e,φ(n))=1;
找到e在模φ(n)下的数论倒数d, 即ed1(modφ(n))
假设明文是M,加密后的密文是C
加密过程

Memod n=C

解密过程

Cdmod n=M

原理

要用到的定理和公式:

  • 欧拉定理,这里只要用到:
    • 两素数p,qn=pq,欧拉函数φ(n) = (p1)(q1)an互素,aφ(n) = 1 (mod n)
    • 一个素数p,欧拉函数φ(p) = p1ap互素,aφ(p) = 1 (mod p)
  • 以下两个可能是都知道的吧,也很容易证明,但本人数学渣渣,还是写上万一哪天忘了。
  • a=b (mod c)ad=bd (mod c)
  • a=b (mod c)ad=bd (mod c)

证明M经过加密解密之后可以得到M

Me mod n = C

因为
Me=C+kn

所以
C=Mekn

Cd=(Mekn)dMed (mod n)

即我们要证明MedM (mod n)
因为ed=1 (mod φ(n))
所以ed=kφ(n)+1
Med=Mkφ(n)+1

即要证
Mkφ(n)+1M (mod n)

下面分两种情况:
情况一:gcd(M,n) = 1
由欧拉定理知
Mφ(n)1 (mod n)

进一步,得证
Mkφ(n)+1M (mod n)

情况二gcd(M,n)1
M一定有因子p或q,不妨设M=jq
由于M与p互素,由欧拉定理

Mp11 (mod p)

乘方后再乘上M
M(p1)(q1)kMMkφ(n)+1MedM(mod p)

由于M=jq
(jq)ed=jq+lp

则q能整除l,设l=Lq
最后
(jq)ed=jq+Ln

MedM (mod n)

证明完毕

0 0