RSA加密解密原理

来源:互联网 发布:淘宝网店价值评估 编辑:程序博客网 时间:2024/05/22 12:54

加密过程

加密过程可以通过如下公式表示

C=Memodn

C:加密后的密文。
M:表示要加密的明文数据块。将要加密的明文分成若干个消息块,然后将消息块中的字符转换为数字,这样就得到了一个很大的整数M。
e:公钥之一
n:公钥之一

解密过程

解密过程可以通过如下公式表示

M=Cdmodn

其中CM与上面的定义一致。d就是使用者的私钥。

它是如何工作的?

举一个简单的例子

  1. 首先选择两个素数,比如我们选11和23
  2. 计算他们的乘机,得到n。即 n=1123=253.
  3. 现在计算私钥dd要与(p1)(q1)互质。这样的数有很多个,这里我们选19,即d=19
  4. 公钥e可由公式19e(mod220)=1计算出。计算得到e=139
  5. 这样,我们得到了公钥(e,n)=(139,253) 和私钥 d=19

现在尝试加密数据“Hi”

  1. 查“Hi”的ASCII值,得到明文(72,105)
  2. 用公钥对明文进行加密

72139(mod253)=2105139(mod253)=101

得到密文(2,101)
3. 使用私钥d,将密文还原成明文

219(mod253)=7210119(mod253)=105

4. 将明文转换为对应的ASCII字符,得到“Hi”

工作原理

欧拉函数

欧拉函数定义

欧拉函数φ(n)是小于或等于n的正整数中与n互质的数的数目。
如小于5且与5互质的数有1,2,3,4,所以φ(5)=4。又比如小于8且与8互质的数有1,3,5,7,所以φ(8)=4

欧拉函数的值

  1. φ(1)=1
  2. n是质数pk次幂,则φ(n)=pkpk1=(p1)pk1
    φ(25)=φ(52)=5251=20
  3. m,n互质,则φ(mn)=φ(m)φ(n)
    φ(72)=φ(89)=φ(2332)=φ(23)φ(32)=(84)(93)=24

欧拉定理

n,a是正整数,且n,a互质,则

aφ(n)1(modn)

其中φ(n)欧拉函数。
比如a=3,n=5,则φ(5)=4,aφ(n)=34=81
8180+11(mod5)

欧拉定理可以用来简化幂运算,如计算7222的个位数。由于710互素,且φ(10)=4。由欧拉定理知741(mod10)。所以7222=7455+2=(74)557215572499(mod10)

RSA模型

  1. 首先要选两个很大的素数p,q,并计算n=pq作为公钥的一部分,但选择的p,q需要保密。
  2. 此时欧拉函数φ(n)=φ(pq)=(p1)(q1)
  3. 像上面的例子一样,选择一个d,保证min(p,q)dφ(n),且dφ(n)互质。
  4. 通过edmodφ(n)=1得到e。此时已得到全部公钥e,n和私钥d,且ed=1+rφ(n)
  5. 加密过程为C=Memodn,解密过程为M=Cdmodn。等式成立的推导过程为:

    M=Cdmodn=(Memodn)dmodn =Medmodn=M1+rφ(n)modn=M(Mφ(n))rmodn

    由欧拉定理,Mφ(n)1(modn),所以
    M(Mφ(n))rmodn=M1rmodn=Mmodn

    此时说明明文M经过编码为C再经过解码为M时,M=Mmodn。但我们在做编码解码时, 限制 0M<n,0M<n,所以编码和解码后的结果是相同的,即M=M

证毕。

0 0
原创粉丝点击