RSA加密原理概述

RSA加密中用到的数学公式

欧拉函数通式: 若a可以写成 a=P1^α1...Pn^αn,其中P1...Pn为素数,α1...αn为正整数,则我们有

φ(a) = (P1^(α1-1))(P1-1)...(Pn^(αn-1))(Pn-1),由此我们可得二元一次情况下的化简,若a = pq(pq均为素数),有φ(a) =(p-1)(q-1)

欧拉定理:(a,m)= 1时,a^φ(m) = 1(modm)

//上述定理参见初等数论2第8-14页。

若a,b是两个互素的正整数,一定存在两个数x,y使得ax+by=1,这里因为xy可以做正负变化,所以写成ax-by = 1也行

即,若a,b>0且(a,b)= 1,一定存在两个数使 ax = 1(modb)

//参见初等数论1第45页

a=b(modm)时,有a^n=b^n(modm)

//初等数论1第58页

秘钥的生成过程

我们取两个大素数pq,并令他们的积为模数n。

根据通式,我们有φ(n) =(p-1)(q-1)

取与φ(n)互素且小于φ(n)的公钥e,则一定存在e的逆元d使得 ed = 1(modφ(n)),取d为私钥

假设我们需要给消息M加密,我们的消息M必须与n互素,又由于n=pq,M只需要小于n且不等于p或者q即可。

加密时,我们求得加密数 C1 = M^e(modn)

解密时,我们求得解密数 C2 = C1^d(modn)

所以加密时,我们需要对,而解密时,我们需要对。

我们将要来证明C2=M:

因为 (M^e(modn))^d = M^ed(modn),所以有C2 = M^ed(modn),

因为ed = 1+ kφ(n),所以有C2 = M^(1+kφ(n))(modn) = M*(M^φ(n))^k(modn)

因为欧拉定理有M^φ(n) = 1(modn),所以C2 = M(modn),又因为C2与M运算过程中恒小于n,所以C2=M。

总结一下 C2 = C1^d(modn) = M^ed(modn) = M^(1+kφ(n))(modn) = M(modn)。

而秘钥运算的条件是,e与φ(n)互素,且M与n互素。

私钥与公钥的对应关系

公钥和私钥是一对一的关系,因为私钥取的是公钥关于模数n的1(modφ(n))的逆元,所以公私钥是一对一的关系,不管公钥还是私钥改变,逆元一定会跟着改变。

虽然公钥和私钥都可以通过增加n的整数倍使其对n的余数不变,但是同余的新公钥是没有意义的,因为n是暴露在公钥里的。

RSA加密的弱点(待完善)

你可能感兴趣的:(RSA加密原理概述)