RSA加密算法

RSA算法原理

  1. 非对称加密算法,有公钥和私钥之分
  2. 通过公钥加密的数据必须通过私钥才能解密,反之,私钥加密的数据需要通过公钥解
  3. 私钥能生成公钥,当公钥不能推导出私钥

欧拉函数

  1. 指小于n的正整数中与n互质的数的总个数(记为 ϕ ( n ) {\phi}(n) ϕ(n) ),当n为质数时则 ϕ ( n ) = n − 1 \phi(n) = n-1 ϕ(n)=n1
  2. 互质指公约数只有1的两个整数
  3. 质数指大于1的自然数中,除了1和它本身以外不再有其他因数的自然数

如: ϕ ( 6 ) = 2 \phi(6) = 2 ϕ(6)=2 因为小于6的正整数有1、2、3、4、5而与6互质的有 1、5那么总个数为2个 ϕ ( 7 ) = 7 − 1 \phi(7) = 7-1 ϕ(7)=71 因为7为质数

  1. 当两个质数p、q且p != q , 则 n = pq 就有—> $\phi(n) = \phi(pq) = \phi§ * \phi(q) = (p-1)*(q-1) $

如:p = 5 , q = 7, 则n = 35 ------> ϕ ( 35 ) = ( 5 − 1 ) ∗ ( 7 − 1 ) = 24 \phi(35) = (5-1)*(7-1) = 24 ϕ(35)=(51)(71)=24

模反元素

如果两个正整数 e e e ϕ ( n ) \phi(n) ϕ(n)互质,则有整数d使得–> e d − 1 ed-1 ed1 ϕ ( n ) \phi(n) ϕ(n)整除 --> e d    m o d    ϕ ( n ) = 1 ed~~mod~~\phi(n) = 1 ed  mod  ϕ(n)=1 ,此时d就叫e的模反元素

加密原理

在这里插入图片描述

经过上述理论可以明白每一步的计算过程,其中明文记为M 密文记为C 。则加密公式为 : M e    m o d    n = C M^e~~ mod ~~n = C Me  mod  n=C解密公式为: C d    m o d    n = M C^d ~~ mod ~~ n = M Cd  mod  n=M

推导过程:

C d    m o d    n = M C^d ~~ mod ~~ n = M Cd  mod  n=M

—> ( M e    m o d    n ) d    m o d    n = M (M^e~~mod ~~n)^d ~~ mod ~~ n = M (Me  mod  n)d  mod  n=M

—> M e b    m o d    n = M M^{eb} ~~ mod ~~n = M Meb  mod  n=M

—> M k ϕ ( n ) + 1    m o d    n = M M^{k\phi(n) + 1} ~~ mod ~~ n = M Mkϕ(n)+1  mod  n=M ## 因为$eb~~mod ~~\phi(n) = 1 $ —> eb = k$\phi(n) $ +1 #k表示正整数

—> ( M k ϕ ( n ) ∗ M )    m o d    n = M (M^{k\phi(n)} * M) ~~ mod ~~ n = M (Mkϕ(n)M)  mod  n=M ## 实际加密中n为一个很大的数,那么当 M k ϕ ( n )   = 1 M^{k\phi(n)} ~ = 1 Mkϕ(n) =1 ( 1 ∗ M )    m o d    n = M (1 * M) ~~mod ~~n = M (1M)  mod  n=M

**定义:当a、n同为互质,则 a ϕ ( n ) ≡ 1    m o d    n a^{\phi(n)} \equiv 1 ~~mod ~~n aϕ(n)1  mod  n ,其中在n为一个很大的数的情况下,且a与n大小差距非常大时,就有 a ϕ ( n ) = 1 a^{\phi(n)} = 1 aϕ(n)=1 **

证明: M k ϕ ( n )   = 1 M^{k\phi(n)} ~ = 1 Mkϕ(n) =1

答:根据上面定义可知,要上列公式成立则有 ( M k ) ϕ ( n ) = 1 (M^k)^{\phi(n)} = 1 (Mk)ϕ(n)=1 ,这里 M k M^k Mk就等同于定义中的a,那么就需要证明n为一个很大的数,同为互质,且 M k M^k Mk 与 n大小距离非常大,,,因为 n = p ∗ q n = p * q n=pq 因为p、q是一对不相等且互质的数,那么n只有在 n /[p,q,1,n]时才能被整除,其中M为明文它本身就是一个不是特别大的数,所以在加密过程中 M k M^k Mk 与 n一定满足上述的定义条件,那么就有 M k ϕ ( n )   = 1 M^{k\phi(n)} ~ = 1 Mkϕ(n) =1

例子:

设p = 3,q = 11,M(明文) = 20
加密过程:
1-----> p=3,q=11
2-----> n = p*q = 33
3-----> φ(n) = (p-1) * (q-1)  = 2 * 10 = 20
4-----> 1<e<φ(n) ,设e= 3
5-----> de mod φ(n) = 1 --> 3d mod 20 = 1 --> 设d = 7
6-----> KU = (e,n) = (3,33)
7-----> KR = (d,n) = (7,33)

经过上面得到了公钥和私钥那么如下:

加密则为 M e    m o d    n = C M^e~~ mod ~~n = C Me  mod  n=C —> 2 0 3    m o d    33 = 14 20^3 ~~ mod ~~33 = 14 203  mod  33=14 则密文为14

解密则为 C d    m o d    n = M C^d ~~ mod ~~ n = M Cd  mod  n=M —> $14^7 ~~ mod 33 = 20 $ 对应的明文为20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值