0


【密码学基础】RSA加密算法

1 RSA介绍

  • RSA是一种非对称加密算法,即加密和解密时用到的密钥不同。
  • 加密密钥是公钥,可以公开;解密密钥是私钥,必须保密保存。
  • 基于一个简单的数论事实:两个大质数相乘很容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥;而两个大质数组合成私钥。

2 密钥对的生成

step 1 生成N(公钥和私钥的一部分)

首先选取两个互为质数的数

    p
   
  
  
   p
  
 
p和

 
  
   
    q
   
  
  
   q
  
 
q(

 
  
   
    p
   
   
    ≠
   
   
    q
   
   
    ,
   
   
    g
   
   
    c
   
   
    d
   
   
    (
   
   
    p
   
   
    ,
   
   
    q
   
   
    )
   
   
    =
   
   
    1
   
  
  
   p\neq q, gcd(p, q)=1
  
 
p​=q,gcd(p,q)=1),于是:

 
  
   
    
     N
    
    
     =
    
    
     p
    
    
     ∗
    
    
     q
    
   
   
    N = p * q
   
  
 N=p∗q

step 2 生成L

根据欧拉函数,不大于

    N
   
  
  
   N
  
 
N且与

 
  
   
    N
   
  
  
   N
  
 
N互质的数是

 
  
   
    p
   
   
    −
   
   
    1
   
  
  
   p-1
  
 
p−1和

 
  
   
    q
   
   
    −
   
   
    1
   
  
  
   q-1
  
 
q−1两个数的最小公倍数:

 
  
   
    
     L
    
    
     =
    
    
     [
    
    
     p
    
    
     −
    
    
     1
    
    
     ,
    
    
     q
    
    
     −
    
    
     1
    
    
     ]
    
    
     =
    
    
     (
    
    
     p
    
    
     −
    
    
     1
    
    
     )
    
    
     (
    
    
     q
    
    
     −
    
    
     1
    
    
     )
    
   
   
    L = [p-1, q-1] = (p-1)(q-1)
   
  
 L=[p−1,q−1]=(p−1)(q−1)

互质数

    p
   
  
  
   p
  
 
p和

 
  
   
    q
   
  
  
   q
  
 
q不能太小,如果他们足够大,那么根据目前的计算机技术和其他工具,至今也没能从

 
  
   
    N
   
  
  
   N
  
 
N分解出

 
  
   
    p
   
  
  
   p
  
 
p和

 
  
   
    q
   
  
  
   q
  
 
q。也就是说,只要密钥长度

 
  
   
    N
   
  
  
   N
  
 
N足够大(1024足够),基本上不可能从公钥信息推出私钥信息。

step 3 生成E(加密密钥)

满足如下两个条件:

     1
    
    
     <
    
    
     E
    
    
     <
    
    
     L
    
   
   
    1 < E < L
   
  
 1<E<L

 
  
   
    
     g
    
    
     c
    
    
     d
    
    
     (
    
    
     E
    
    
     ,
    
    
     L
    
    
     )
    
    
     =
    
    
     1
    
   
   
    gcd(E, L) = 1
   
  
 gcd(E,L)=1


 
  
   
    g
   
   
    c
   
   
    d
   
   
    (
   
   
    E
   
   
    ,
   
   
    L
   
   
    )
   
   
    =
   
   
    1
   
  
  
   gcd(E, L) = 1
  
 
gcd(E,L)=1保证

 
  
   
    E
   
  
  
   E
  
 
E和

 
  
   
    L
   
  
  
   L
  
 
L最大公因数为1(互质),因此保证step 4生成解密密钥

 
  
   
    D
   
  
  
   D
  
 
D时,一定存在

 
  
   
    D
   
  
  
   D
  
 
D满足条件。

step 4 生成D(解密密钥)

满足如下两个条件:

     1
    
    
     <
    
    
     D
    
    
     <
    
    
     L
    
   
   
    1 < D < L
   
  
 1<D<L

 
  
   
    
     (
    
    
     E
    
    
     ∗
    
    
     D
    
    
     )
    
    
     m
    
    
     o
    
    
     d
    
    
     L
    
    
     =
    
    
     1
    
   
   
    (E * D) mod L = 1
   
  
 (E∗D)modL=1

3 加密解密过程

在这里插入图片描述

另外,密钥对为:

    (
   
   
    E
   
   
    ,
   
   
    D
   
   
    ,
   
   
    N
   
   
    )
   
  
  
   (E, D, N)
  
 
(E,D,N)。

4 计算示例

明文信息为

    p
   
   
    l
   
   
    a
   
   
    i
   
   
    n
   
   
    t
   
   
    e
   
   
    x
   
   
    t
   
   
    =
   
   
    85
   
   
    ,
   
   
    E
   
   
    =
   
   
    7
   
   
    ,
   
   
    p
   
   
    =
   
   
    11
   
   
    ,
   
   
    q
   
   
    =
   
   
    13.
   
  
  
   plaintext=85,E=7,p=11,q=13.
  
 
plaintext=85,E=7,p=11,q=13.

生成密钥对
step 1:

     N
    
    
     =
    
    
     p
    
    
     ∗
    
    
     q
    
    
     =
    
    
     11
    
    
     ∗
    
    
     13
    
    
     =
    
    
     143
    
   
   
    N=p*q=11*13=143
   
  
 N=p∗q=11∗13=143

step 2:

     L
    
    
     =
    
    
     (
    
    
     p
    
    
     −
    
    
     1
    
    
     )
    
    
     (
    
    
     q
    
    
     −
    
    
     1
    
    
     )
    
    
     =
    
    
     10
    
    
     ∗
    
    
     12
    
    
     =
    
    
     120
    
   
   
    L=(p-1)(q-1)=10*12=120
   
  
 L=(p−1)(q−1)=10∗12=120

step 3:

     (
    
    
     E
    
    
     ∗
    
    
     D
    
    
     )
    
    
     m
    
    
     o
    
    
     d
    
    
     L
    
    
     =
    
    
     1
    
    
     ⇒
    
    
     (
    
    
     7
    
    
     ∗
    
    
     D
    
    
     )
    
    
     m
    
    
     o
    
    
     d
    
    
     120
    
    
     =
    
    
     1
    
    
     ⇒
    
    
     D
    
    
     =
    
    
     103
    
   
   
    (E*D)modL=1 \Rightarrow (7*D)mod120=1 \Rightarrow D=103
   
  
 (E∗D)modL=1⇒(7∗D)mod120=1⇒D=103

加密

     c
    
    
     y
    
    
     p
    
    
     h
    
    
     e
    
    
     r
    
    
     t
    
    
     e
    
    
     x
    
    
     t
    
    
     =
    
    
     p
    
    
     l
    
    
     a
    
    
     i
    
    
     n
    
    
     t
    
    
     e
    
    
     x
    
    
     
      t
     
     
      E
     
    
    
     m
    
    
     o
    
    
     d
    
    
     N
    
    
     =
    
    
     8
    
    
     
      5
     
     
      7
     
    
    
     m
    
    
     o
    
    
     d
    
    
     143
    
    
     =
    
    
     123
    
   
   
    cyphertext = plaintext^E mod N=85^7mod143=123
   
  
 cyphertext=plaintextEmodN=857mod143=123

解密

     p
    
    
     l
    
    
     a
    
    
     i
    
    
     n
    
    
     t
    
    
     e
    
    
     x
    
    
     t
    
    
     =
    
    
     c
    
    
     y
    
    
     p
    
    
     h
    
    
     e
    
    
     r
    
    
     t
    
    
     e
    
    
     x
    
    
     
      t
     
     
      D
     
    
    
     m
    
    
     o
    
    
     d
    
    
     143
    
    
     =
    
    
     12
    
    
     
      3
     
     
      103
     
    
    
     m
    
    
     o
    
    
     d
    
    
     143
    
    
     =
    
    
     85
    
   
   
    plaintext = cyphertext^D mod 143=123^{103}mod143=85
   
  
 plaintext=cyphertextDmod143=123103mod143=85
标签: 密码学 安全

本文转载自: https://blog.csdn.net/qq_16763983/article/details/128101681
版权归原作者 Mr.zwX 所有, 如有侵权,请联系我们删除。

“【密码学基础】RSA加密算法”的评论:

还没有评论