RSA算法原理
- 非对称加密算法,有公钥和私钥之分
- 通过公钥加密的数据必须通过私钥才能解密,反之,私钥加密的数据需要通过公钥解
- 私钥能生成公钥,当公钥不能推导出私钥
欧拉函数
- 指小于n的正整数中与n互质的数的总个数(记为ϕ(n){\phi}(n)ϕ(n) ),当n为质数时则ϕ(n)=n−1\phi(n) = n-1ϕ(n)=n−1
- 互质指公约数只有1的两个整数
- 质数指大于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)=7−1 因为7为质数
- 当两个质数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)=(5−1)∗(7−1)=24
模反元素
如果两个正整数eee和ϕ(n)\phi(n)ϕ(n)互质,则有整数d使得–> ed−1ed-1ed−1被ϕ(n)\phi(n)ϕ(n)整除 --> ed mod ϕ(n)=1ed~~mod~~\phi(n) = 1ed mod ϕ(n)=1 ,此时d就叫e的模反元素
加密原理
经过上述理论可以明白每一步的计算过程,其中明文记为M
密文记为C
。则加密公式为 : Me mod n=CM^e~~ mod ~~n = CMe mod n=C ,解密公式为:Cd mod n=MC^d ~~ mod ~~ n = MCd mod n=M
推导过程:
Cd mod n=MC^d ~~ mod ~~ n = MCd mod n=M
—> (Me mod n)d mod n=M(M^e~~mod ~~n)^d ~~ mod ~~ n = M(Me mod n)d mod n=M
—> Meb mod n=MM^{eb} ~~ mod ~~n = MMeb mod n=M
—> Mkϕ(n)+1 mod n=MM^{k\phi(n) + 1} ~~ mod ~~ n = MMkϕ(n)+1 mod n=M ## 因为$eb~~mod ~~\phi(n) = 1 $ —> eb = k$\phi(n) $ +1 #k表示正整数
—> (Mkϕ(n)∗M) mod n=M(M^{k\phi(n)} * M) ~~ mod ~~ n = M(Mkϕ(n)∗M) mod n=M ## 实际加密中n为一个很大的数,那么当Mkϕ(n) =1M^{k\phi(n)} ~ = 1Mkϕ(n) =1 即 (1∗M) mod n=M(1 * M) ~~mod ~~n = M(1∗M) mod n=M
**定义:当a、n同为互质,则aϕ(n)≡1 mod na^{\phi(n)} \equiv 1 ~~mod ~~naϕ(n)≡1 mod n ,其中在n为一个很大的数的情况下,且a与n大小差距非常大时,就有aϕ(n)=1a^{\phi(n)} = 1aϕ(n)=1 **
证明:Mkϕ(n) =1M^{k\phi(n)} ~ = 1Mkϕ(n) =1
答:根据上面定义可知,要上列公式成立则有(Mk)ϕ(n)=1(M^k)^{\phi(n)} = 1(Mk)ϕ(n)=1 ,这里MkM^kMk就等同于定义中的a,那么就需要证明n为一个很大的数,同为互质,且MkM^kMk 与 n大小距离非常大,,,因为n=p∗qn = p * qn=p∗q 因为p、q是一对不相等且互质的数,那么n只有在 n /[p,q,1,n]时才能被整除,其中M为明文它本身就是一个不是特别大的数,所以在加密过程中MkM^kMk 与 n一定满足上述的定义条件,那么就有Mkϕ(n) =1M^{k\phi(n)} ~ = 1Mkϕ(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)
经过上面得到了公钥和私钥那么如下:
加密则为Me mod n=CM^e~~ mod ~~n = CMe mod n=C —> 203 mod 33=1420^3 ~~ mod ~~33 = 14203 mod 33=14 则密文为14
解密则为Cd mod n=MC^d ~~ mod ~~ n = MCd mod n=M —> $14^7 ~~ mod 33 = 20 $ 对应的明文为20