RSA数学原理解析

1.引言

我的博客:小吴の博客

原文链接:RSA数学原理解析

RSA算法(RSA algorithm)是一种非对称加密算法, 广泛应用在互联网和电子商务中. 它使用一对密钥进行加密和解密, 分别称为公钥(public key)私钥(private key). 使用公钥加密的内容只能用私钥解密, 使用私钥加密的内容只能用公钥解密, 并且不能通过公钥在可行的时间内计算出私钥. 这使得加密通信不需要交换私钥, 保证了通信的安全. 那么它是怎么做到这一点的呢? 背后有哪些数学原理? 这篇文章我们来讨论这个问题.

本文会先介绍RSA算法中用到的数论概念和定理: 模算术, 最大公约数与贝祖定理, 线性同余方程, 中国余数定理, 费马小定理; 然后再介绍RSA算法的原理, 并证明其是有效的. 本文会假设你了解数论的基本概念, 如素数, 最大公约数, 互素等

2.模算术

2.1整数除法

用一个正整数去除一个整数,可以得到一个商和一个余数,数学符号定义为:

定理1:令 a 为整数, d 为正整数, 则存在唯一的整数 q 和 r, 满足 0 ≤ r < d 0\leq r<d 0r<d, 使得 a = d q + r a=dq+r a=dq+r

当r=0时,我们称 d 整除 a, 记作 d ∣ a d|a da; 否则称 d 不整除 a, 记作 d ∤ a d\nmid a da,整除有以下基本性质:

定理2:令a,b,c,为整数,其中 a ≠ 0 a\neq0 a=0,则:如果 a ∣ b a|b ab a ∣ c a|c ac a ∣ ( a + b ) a|(a+b) a(a+b)

2.2模算术

在数论中我们特别关心一个整数被一个正整数除时的余数. 我们用 a   m o d   m = b a\bmod m=b amodm=b 表示整数 a 除以正整数 m 的余数是 b. 为了表示两个整数被一个正整数除时的余数相同, 人们又提出了同余式(congruence).

定义1:如果 a 和 b 是整数而 m 是正整数, 则当 m 整除 a - b 时称 a 模 m 同余 b. 记作 a ≡ b (   m o d   m ) a\equiv b(\bmod m) ab(modm)

a ≡ b (   m o d   m ) a\equiv b(\bmod m) ab(modm) a   m o d   m = b a\bmod m=b amodm=b很相似. 事实上, 如果 a   m o d   m = b a\bmod m=b amodm=b, 则 a ≡ b (   m o d   m ) a\equiv b(\bmod m) ab(modm). 但他们本质上是两个不同的概念. a   m o d   m = b a\bmod m=b amodm=b 表达的是一个函数, 而 a ≡ b (   m o d   m ) a\equiv b(\bmod m) ab(modm) 表达的是两个整数之间的关系.

另外,同余式 a ≡ b (   m o d   m ) a\equiv b(\bmod m) ab(modm)还可以表示为 m ∣ ( b − a ) m|(b-a) m(ba),同时符合上式的式子可以转化为同余式

模算术的性质:

定理3:如果m是正整数,a,b是整数,则有
( a + b )   m o d   m = ( ( a   m o d   m ) + ( b   m o d   m ) )   m o d   m a b   m o d   m = ( a   m o d   m ) ( b   m o d   m )   m o d   m \begin{aligned} (a+b)\bmod m &=((a\bmod m)+(b\bmod m))\bmod m\\ ab\bmod m &=(a\bmod m)(b\bmod m)\bmod m \end{aligned} (a+b)modmabmodm=((amodm)+(bmodm))modm=(amodm)(bmodm)modm
根据定理3,可得一下推论

推论1:设m是正整数,a,b,c是整数;如果 a ≡ b (   m o d   m ) a\equiv b(\bmod m) ab(modm) a c ≡ b c (   m o d   m ) ac\equiv bc(\bmod m) acbc(modm)

证明

∵ a ≡ b (   m o d   m ) \because a\equiv b(\bmod m) ab(modm)

∴ m ∣ ( b − a ) \therefore m|(b-a) m(ba) 所以右端再乘以任何整数m都可以整除

m ∣ ( b − a ) c m|(b-a)c m(ba)c 同理,既然 m ∣ ( b − a ) m|(b-a) m(ba) c ∣ c c|c cc

也可以推出 m c ∣ ( b − a ) c mc|(b-a)c mc(ba)c

结论:若 a ≡ b (   m o d   m ) a\equiv b(\bmod m) ab(modm),则 a c ≡ b c (   m o d   m ) ac\equiv bc(\bmod m) acbc(modm) a c ≡ b c (   m o d   m c ) ac\equiv bc(\bmod mc) acbc(modmc)同时成立

推论2设 m 是正整数, a, b 是整数, c 是不能被 m 整除的整数; 如果 a c ≡ b c (   m o d   m ) ac\equiv bc(\bmod m) acbc(modm), 则 a ≡ b (   m o d   m ) a\equiv b(\bmod m) ab(modm),依据推论1的证明,也是显而易见的。

3.最大公约数

如果一个整数 d 能够整除另一个整数 a, 则称 d 是 a 的一个约数(divisor); 如果 d 既能整除 a 又能整除 b, 则称 d 是 a 和 b 的一个公约数(common divisor). 能整除两个整数的最大整数称为这两个整数的最大公约数(greatest common divisor).

定义2:令a和b是不全为0的两个整数,能使 d ∣ a d|a da d ∣ b d|b db的最大整数d成为a和b的最大公约数,记作 g c d ( a , b ) gcd(a,b) gcd(a,b)

3.1 求最大公约数

如何求两个已知整数的最大公约数呢? 这里我们讨论一个高效的求最大公约数的算法, 称为辗转相除法. 因为这个算法是欧几里得发明的, 所以也称为欧几里得算法. 辗转相除法基于以下定理:

引理 1 a = b q + r a=bq+r a=bq+r, 其中 a, b, q 和 r 均为整数. 则有 g c d ( a , b ) = g c d ( b , r ) gcd(a,b)=gcd(b,r) gcd(a,b)=gcd(b,r)

证明:我们假设 d 是 a 和 b 的公约数, 即 d ∣ a d|a da d ∣ b d|b db, 那么根据定理2, d 也能整除 a − b q = r a-bq=r abq=r. 所以 a 和 b 的任何公约数也是 b 和 r 的公约数;

类似地, 假设 d 是 b 和 r 的公约数, 即 d ∣ b d|b db d ∣ r d|r dr, 那么根据定理2, d 也能整除 a = b q + r a=bq+r a=bq+r… 所以 b 和 r 的任何公约数也是 a 和 b 的公约数;

因此, a 与 b 和 b 与 r 拥有相同的公约数. 所以 g c d ( a , b ) = g c d ( b , r ) gcd(a,b)=gcd(b,r) gcd(a,b)=gcd(b,r)

辗转相除法就是利用引理1, 把大数转换成小数. 例如, 求 g c d ( 287 , 91 ) gcd(287,91) gcd(287,91), 我们就把用较大的数除以较小的数. 首先用 287 除以 91, 得
287 = 91 ⋅ 3 + 14 287=91\cdot3+14 287=913+14
我们有 g c d ( 287 , 91 ) = g c d ( 91 , 14 ) gcd(287,91)=gcd(91,14) gcd(287,91)=gcd(91,14),问题转化成求 g c d ( 91 , 14 ) gcd(91,14) gcd(91,14),同样的,用91除以14得
91 = 14 ⋅ 6 + 7 91=14\cdot6+7 91=146+7
g c d ( 91 , 14 ) = g c d ( 14 , 7 ) gcd(91,14)=gcd(14,7) gcd(91,14)=gcd(14,7),用14除以7得
14 = 7 ⋅ 2 + 0 14=7\cdot2+0 14=72+0
所以 g c d ( 297 , 91 ) = g c d ( 91 , 14 ) = g c d ( 14 , 7 ) = 7 gcd(297,91)=gcd(91,14)=gcd(14,7)=7 gcd(297,91)=gcd(91,14)=gcd(14,7)=7

代码是这样的(两个都可以)

def gcd(a,b):
    while b!=0 :
        r = a%b
        a = b
        b = r
    return a

def gcd_new(a,b):
    if b==0: return a
    return gcd_new(b,a%b)

3.2 贝祖定理

现在我们讨论最大公约数的一个重要性质:

定理 4 贝祖定理 如果整数 a, b 不全为零, 则 g c d ( a , b ) gcd(a,b) gcd(a,b)是 a 和 b 的线性组合集 a x + b y ∣ x , y ∈ Z ax+by|x,y\in Z ax+byx,yZ 中最小的元素. 这里的 x 和 y 被称为贝祖系数

证明 A = a x + b y ∣ x , y ∈ Z A=ax+by|x,y\in Z A=ax+byx,yZ 设存在 x 0 x_0 x0 , y 0 y_0 y0 使 d 0 d_0 d0 是 A 中的最小正元素, d 0 = a x 0 + b y 0 d_0=ax_0+by_0 d0=ax0+by0; 现在用 d 0 d_0 d0去除 a, 这就得到唯一的整数 q(商) 和 r(余数) 满足
d 0 q + r = a 0 ≤ r < d 0 ( a x 0 + b y 0 ) q + r = a r = a − a q x 0 − b q y 0 r = a ( 1 − q x 0 ) + b ( − q y 0 ) ∈ A \begin{aligned} d_0q+r &= a \qquad 0\leq r<d_0\\ (ax_0+by_0)q+r&=a\\ r&=a-aqx_0-bqy_0\\ r&=a(1-qx_0)+b(-qy_0)\in A \end{aligned} d0q+r(ax0+by0)q+rrr=a0r<d0=a=aaqx0bqy0=a(1qx0)+b(qy0)A
0 ≤ r < d 0 0\leq r <d_0 0r<d0, d 0 d_0 d0是A中最小的正元素

∴ r = 0 , d ∣ a \therefore r=0,d|a r=0,da

同理, 用 d 0 d_0 d0去除 b, 可得 d 0 ∣ b d_0|b d0b. 所以说 d 0 d_0 d0 是 a 和 b 的公约数.

设 a 和 b 的最大公约数是 d, 那么 d ∣ ( a x 0 + b y 0 ) d|(ax_0+by_0) d(ax0+by0) d ∣ d 0 d|d_0 dd0

∴ d 0 \therefore d_0 d0是a和b的最大公约数

我们可以对辗转相除法稍作修改, 让它在计算出最大公约数的同时计算出贝祖系数.

def gcd_new_2(a,b):
    if b==0: return a,1,0
    d,x,y = gcd_new_2(b,a%b)
    return d,y,x-(int(a/b))*y

大家是否还记得辗转相除法:我们换一个步骤多一点的例子 g c d ( 963 , 657 ) gcd(963,657) gcd(963,657)
963 = 1 ⋅ 657 + 306 9 = 7 ⋅ 657 − 15 ⋅ ( 963 − 657 ) = 22 ⋅ 657 − 15 ⋅ 963 657 = 2 ⋅ 306 + 45 9 = 7 ⋅ ( 657 − 2 ⋅ 306 ) − 306 = 7 ⋅ 657 − 15 ⋅ 963 306 = 6 ⋅ 45 + 36 9 = 45 − ( 306 − 6 ⋅ 45 ) = 7 ⋅ 45 − 306 45 = 1 ⋅ 36 + 9 9 = 45 − 36 36 = 4 ⋅ 9 \begin{aligned} 963&=1\cdot657+306 \qquad\qquad&9&=7\cdot657-15\cdot(963-657)=22\cdot657-15\cdot963 \\ 657&=2\cdot306+45 &9&=7\cdot(657-2\cdot306)-306=7\cdot657-15\cdot963 \\ 306&=6\cdot45+36 &9&=45-(306-6\cdot45)=7\cdot45-306\\ 45 &=1\cdot36+9 &9&=45-36\\ 36 &=4\cdot9 \end{aligned} 9636573064536=1657+306=2306+45=645+36=136+9=499999=765715(963657)=2265715963=7(6572306)306=765715963=45(306645)=745306=4536

g c d ( 963 , 657 ) = 9 = 22 ⋅ 657 − 15 ⋅ 963 , x 0 = − 15 , y 0 = 22 gcd(963,657)=9=22\cdot657-15\cdot963,x_0=-15,y_0=22 gcd(963,657)=9=2265715963,x0=15,y0=22就是二元一次方程 963 x + 657 y = 9 963x+657y=9 963x+657y=9的一组解且是 963 x + 657 y 963x+657y 963x+657y方程的正整数中的最小解。

4.线性同余方程

现在我们来讨论求解形如 a x ≡ b (   m o d   m ) ax\equiv b(\bmod m) axb(modm) 的线性同余方程. 求解这样的线性同余方程是数论研究及其应用中的一项基本任务. 如何求解这样的方程呢? 我们要介绍的一个方法是通过求使得方程 a ‾ a ≡ 1 (   m o d   m ) \overline{a}a\equiv 1(\bmod m) aa1(modm) 成立的整数 a ‾ \overline{a} a. 我们称 a ‾ \overline{a} a为 a 模 m 的逆. 下面的定理指出, 当 a 和 m 互素时, a 模 m 的逆必然存在.

定理5:如果 a 和 m 为互素的整数且 m > 1 m>1 m>1, 则 a 模 m 的逆存在, 并且是唯一的.

证明 由贝祖定理可知, ∵ g c d ( a , m ) = 1 \because gcd(a,m)=1 gcd(a,m)=1 , ∴ 存在整数 x 和 y 使得
a x + m y = 1 ax+my=1 ax+my=1
这蕴含着
a x + m y ≡ 1 (   m o d   m ) ∵ m y ≡ 0 (   m o d   m ) ,所以有 a x ≡ 1 (   m o d   m ) ∴ x 为 a 模的逆 ax+my\equiv 1(\bmod m)\\ \because my\equiv0(\bmod m),所以有\\ ax\equiv 1(\bmod m)\\ \therefore x为a模的逆 ax+my1(modm)my0(modm),所以有ax1(modm)xa模的逆
这样我们就可以调用辗转相除法 gcd(a, m) 求得 a 模 m 的逆.

求得了 a 模 m 的逆 �¯, 现在我们可以来解线性同余方程了. 具体的做法是这样的: 对于方程 a x ≡ b (   m o d   m ) ax\equiv b( \bmod m) axb(modm)同时乘以 a ‾ \overline{a} a得,
a ‾ a x ≡ a ‾ b (   m o d   m ) \overline{a}ax\equiv \overline{a}b(\bmod m) aaxab(modm)
$把\overline{a}a\equiv 1(\bmod m )代入上式,得\$
x ≡ a ‾ b (   m o d   m ) x\equiv \overline{a}b(\bmod m) xab(modm)

x ≡ a ‾ b (   m o d   m ) x\equiv \overline{a}b(\bmod m) xab(modm)就是方程的解,注意同余方程会有无数个W整数解, 所以我们用同余式来表示同余方程的解.

例1:求 34 x ≡ 77 (   m o d   89 ) 34x\equiv 77(\bmod 89) 34x77(mod89)

调用 g c d ( 34 , 89 ) gcd(34,89) gcd(34,89),得 g c d ( 34 , 89 ) = 1 = 13 ∗ 89 − 34 ∗ 34 gcd(34,89)=1=13*89-34*34 gcd(34,89)=1=13893434,所以34模89的逆为-34,方程两边同时乘 -34 得
− 34 ⋅ 34 x ≡ − 34 ⋅ 77 (   m o d   89 ) x ≡ − 34 ⋅ 77 (   m o d   89 ) x ≡ − 2618 ≡ 52 (   m o d   89 ) \begin{aligned} -34\cdot34x&\equiv-34\cdot77(\bmod89)\\ x&\equiv-34\cdot77(\bmod89)\\ x&\equiv-2618\equiv52(\bmod89) \end{aligned} 3434xxx3477(mod89)3477(mod89)261852(mod89)

5.中国剩余定理

中国南北朝时期数学著作 孙子算经 中提出了这样一个问题:

有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?

用现代的数学语言表述就是: 下列同余方程组的解释多少?
{ x ≡ 2 (   m o d   3 ) x ≡ 3 (   m o d   5 ) x ≡ 2 (   m o d   7 ) \begin{cases} x\equiv2(\bmod3)\\ x\equiv3(\bmod5)\\ x\equiv2(\bmod7)\\ \end{cases} x2(mod3)x3(mod5)x2(mod7)
孙子算经 中首次提到了同余方程组问题及其具体解法. 因此中国剩余定理称为孙子定理.

定理 6 中国余数定理 m 1 , m 2 , . . . . . , m n m_1,m_2,.....,m_n m1,m2,.....,mn为大于 1 且两两互素的正整数, a 1 , a 2 , . . . . a n a_1,a_2,....a_n a1,a2,....an 是任意整数. 则同余方程组
{ x ≡ a 1 (   m o d   m 1 ) x ≡ a 2 (   m o d   m 2 ) . . . . . x ≡ a n (   m o d   m n ) \begin{cases} x\equiv a_1(\bmod m_1)\\ x\equiv a_2(\bmod m_2)\\ .....\\ x\equiv a_n(\bmod m_n)\\ \end{cases} xa1(modm1)xa2(modm2).....xan(modmn)
有唯一的模 m = m 1 m 2 . . . . m n m=m_1m_2....m_n m=m1m2....mn的解

证明:我们使用构造证明法, 构造出这个方程组的解. 首先对于 i = 1 , 2 , . . . . , n i=1,2,....,n i=1,2,....,n, 令
M i = m m i M_i=\frac{m}{m_i} Mi=mim

即, M i M_i Mi 是除了 m i m_i mi 之外所有模数的积. ∵ m 1 , m 2 . . . . m n \because m_1,m_2....m_n m1,m2....mn两两互素, ∴ g c d ( m i , M i ) = 1 \therefore gcd(m_i,M_i)=1 gcd(mi,Mi)=1 由定理5 可知, 存在整数 y i y_i yi M i M_i Mi m i m_i mi的逆. 即
M i y i ≡ 1 (   m o d   m i ) M_iy_i\equiv1(\bmod m_i) Miyi1(modmi)
同时乘以 a i a_i ai
a i M i y i ≡ a i (   m o d   m i ) a_iM_iy_i\equiv a_i(\bmod m_i) aiMiyiai(modmi)
就是第 i 个方程的一个解; 那么怎么构造出方程组的解呢? 我们注意到, 根据 M i M_i Mi 的定义可得, 对所有的 j ≠ i j\neq i j=i, 都有 a i M i y i ≡ 0 (   m o d   m j ) a_iM_iy_i\equiv0(\bmod m_j) aiMiyi0(modmj). 因此我们令
x = a 1 M 1 y 1 + a 2 M 2 y 2 + . . . . + a n M n y n = ∑ i = 1 n a i M i y i x=a_1M_1y_1+a_2M_2y_2+....+a_nM_ny_n=\sum_{i=1}^{n}{a_iM_iy_i} x=a1M1y1+a2M2y2+....+anMnyn=i=1naiMiyi
有了这个结论, 我们可以解答 孙子算经 中的问题了: 对方程组的每个方程, 求出 M i M_i Mi , 然后调用 gcd(M_i, m_i) 求出 y i y_i yi:
{ x ≡ 2 (   m o d   3 ) M 1 = 35 y 1 = − 1 x ≡ 3 (   m o d   5 ) M 2 = 21 y 2 = 1 x ≡ 2 (   m o d   7 ) M 3 = 15 y 3 = − 1 \begin{cases} \begin{aligned} &x\equiv2(\bmod3)\quad &M_1&=35\quad y_1=-1\\ &x\equiv3(\bmod5)\quad &M_2&=21\quad y_2=1\\ &x\equiv2(\bmod7)\quad &M_3&=15\quad y_3=-1\\ \end{aligned} \end{cases} x2(mod3)x3(mod5)x2(mod7)M1M2M3=35y1=1=21y2=1=15y3=1
最后求出 x = − 2 ∗ 35 + 3 ∗ 21 + 2 ∗ 15 = 23 ≡ 23 (   m o d   105 ) x=-2*35+3*21+2*15=23\equiv23(\bmod 105) x=235+321+215=2323(mod105)

6.费马小定理

现在我们来看数论中另外一个重要的定理, 费马小定理(Fermat’s little theorem)

定理7费马小定理:如果a是一个整数,p是一个素数,那么
a p ≡ a (   m o d   p ) a^p\equiv a(\bmod p) apa(modp)
特别的当a不是p的倍数时(即 g c d ( a , p ) = 1 gcd(a,p)=1 gcd(a,p)=1),有
a p − 1 ≡ 1 (   m o d   p ) a^{p-1}\equiv1(\bmod p)\\ ap11(modp)

7欧拉函数

再来看一看欧拉函数的知识。对于正整数n,欧拉函数 φ ( n ) \varphi(n) φ(n)是小于或等于n的正整数中与n互质的数的数目

φ ( 8 ) = 4 \varphi(8)=4 φ(8)=4,1,3,5,7均与8互质

定理8:n,m为整数, ( n , m ) = 1 (n,m)=1 (n,m)=1,如果 a 1 , a 2 , . . . . a n a_1,a_2,....a_n a1,a2,....an b 1 , b 2 , . . . . b n b_1,b_2,....b_n b1,b2,....bn分别是模n,m的一个完整系,则有形如 n b i + m a j ( 1 ≤ i ≤ s , 1 ≤ j ≤ t ) nb_i+ma_j(1\leq i\leq s,1\leq j\leq t) nbi+maj(1is,1jt)的数构成模mn的一个完整缩系,特别地有 φ ( n m ) = φ ( n ) φ ( m ) \varphi(nm)=\varphi(n)\varphi(m) φ(nm)=φ(n)φ(m)

定理9:当n ≥ 2 \geq2 2时,设 n = p 1 e 1 . . . . p s e s n=p_1^{e_1}....p_s^{e_s} n=p1e1....pses是n的标准分解式,则
φ ( n ) = ∏ l = 1 s ( p l e l − p l e l − 1 ) = n ∏ l = 1 s ( 1 − 1 p ) \varphi(n)=\prod_{l=1}^{s}(p_l^{e_l}-p_l^{e_l-1})=n\prod_{l=1}^{s}(1-\frac{1}{p}) φ(n)=l=1s(plelplel1)=nl=1s(1p1)
证明:当 ( n . m ) = 1 (n.m)=1 (n.m)=1
φ ( n , m ) = φ ( n ) φ ( m ) \varphi(n,m)=\varphi(n)\varphi(m) φ(n,m)=φ(n)φ(m)
n 1 , n 2 . . . . . . n s n_1,n_2......n_s n1,n2......ns两两互素时
φ ( ∏ l = 1 s n l ) = ∏ l = 1 s n l \varphi(\prod_{l=1}^{s}n_l)=\prod_{l=1}^{s}n_l φ(l=1snl)=l=1snl
因此
φ ( n ) = ∏ l = 1 s φ ( p l e l ) \varphi(n)=\prod_{l=1}^{s}\varphi(p_l^{e_l}) φ(n)=l=1sφ(plel)
问题转化成如何求 φ ( p l e l ) \varphi(p_l^{e_l}) φ(plel),其中 p l p_l pl要么 p l ∣ a p_l|a pla,要么 ( p l , a ) = 1 (p_l,a)=1 (pl,a)=1。在1,2… p l p_l pl当中可以被 p l p_l pl整除的整数共有 p l e l p l = p l e l − 1 \frac{p_l^{e_l}}{p_l}=p_l^{e_l-1} plplel=plel1个,故其中与 p l e l p_l^{e_l} plel互素的个数共有 p l e l − p l e l − 1 p_l^{e_l}-p_l^{e_l-1} plelplel1个,于是
φ ( p l e l ) = p l e l − p l e l − 1 \varphi(p_l^{e_l})=p_l^{e_l}-p_l^{e_l-1} φ(plel)=plelplel1
这样一来
φ ( n ) = ∏ l = 1 s ( p l e l − p l e l − 1 ) = ∏ l = 1 s p l e l ( 1 − 1 p l ) = n ∏ l = 1 s ( 1 − 1 p ) \varphi(n)=\prod_{l=1}^{s}(p_l^{e_l}-p_l^{e_l-1})=\prod_{l=1}^{s}p_l^{e_l}(1-\frac{1}{p_l})=n\prod_{l=1}^{s}(1-\frac{1}{p}) φ(n)=l=1s(plelplel1)=l=1splel(1pl1)=nl=1s(1p1)
其中若p为素数,则
φ ( p ) = p − 1 = p ( 1 − 1 p ) \varphi(p)=p-1=p(1-\frac{1}{p}) φ(p)=p1=p(1p1)

8.RSA算法

我们终于可以来看 RSA 算法了. 先来看 RSA 算法是怎么运作的:

RSA 算法按照以下过程创建公钥和私钥:

  • 1.随机算取两个大素数p和q, p ≠ q p\neq q p=q
  • 2.计算 n = p q n=pq n=pq
  • 3.选取一个与 ( p − 1 ) ( q − 1 ) (p-1)(q-1) (p1)(q1)互素的小整数e
  • 4.求e模 ( p − 1 ) ( q − 1 ) (p-1)(q-1) (p1)(q1)的逆,记作d,即 d e ≡ 1   m o d   ( p − 1 ) ( q − 1 ) de\equiv 1\bmod(p-1)(q-1) de1mod(p1)(q1)
  • 5.将 P = ( e , n ) P=(e,n) P=(e,n)公开,是公钥。
  • 6.将 S = ( d , n ) S=(d,n) S=(d,n)保密,作为私钥 想

要把明文$M 加密成密文 加密成密文 加密成密文C$,计算
C = M e   m o d   n C=M^e\bmod n C=Memodn
要把密文解密成明文 C C C$M $,计算
M = C d   m o d   n M=C^d \bmod n M=Cdmodn

下面证明RSA算法是有效的:

证明:要证明其有效性,只需要证明 C ≡ M e   m o d   n C\equiv M^e\bmod n CMemodn也就是 M e d ≡ M (   m o d   n ) M^{ed}\equiv M(\bmod n) MedM(modn),注意到d为e模 ( p − 1 ) ( 1 − 1 ) (p-1)(1-1) (p1)(11)的逆,所以有
e d ≡ 1 (   m o d   ( p − 1 ) ( q − 1 ) ) ed\equiv 1(\bmod(p-1)(q-1)) ed1(mod(p1)(q1))

  • 15
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值