生成公钥和私钥
- 1、随机选择两个大质数p、q
- 2、n = pq
- 3、φ(n) = (p - 1)(q - 1)
- 4、选择e,使得1 < e < φ(n)且e与φ(n)互质
- 5、求满足ed ≡ 1(mod φ(n))的d
- 6、(n, e)为公钥,(n, d)为私钥
加密和解密
对X(要求X < n)加密得到Y:Y = X^e % n
对Y解密得到X:X = Y^d % n
X = Y^d % n的证明
由ed ≡ 1(mod φ(n))得到ed = iφ(n) + 1
由Y = X^e % n得到Y = X^e - jn
(1)若X与n互质
由欧拉定理得到X^φ(n) ≡ 1(mod n),即X^φ(n) = kn + 1
Y^d % n = (X^e - jn)^d % n = X^(ed) % n = X^(iφ(n) + 1) % n = X(kn + 1)^i % n = X % n = X
(2)若X与n不互质,则X=lp(l < q)或X=lq(l < p)
以X=lp(l < q)为例,显然lp与q互质
由欧拉定理得到(lp)^φ(q) ≡ 1(mod q)
由φ(n) = φ(p)φ(q)得到(lp)^(iφ(n) + 1) ≡ lp(mod q),即(lp)^(ed) = mq + lp,p | m => pq | mq => n | mq
Y^d % n = (X^e - jn)^d % n = X^(ed) % n = (mq + X) % n = X