第四课 RSA算法

RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然秘密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。

准备工作:

1.选择两个质数p, q

2.令N = pq, e 为 与(p-1)(q-1)互质的数 (为了快速解密,若符合条件一般选择最小的3) (N, e)为公钥

3.令d为e mod (p-1)(q-1)的逆。(N,d)为私钥

现在就得到3个数,N e d。

设x为信息

加密:密文为 y = x^e (mod N) 

解密:x = y^d (mod N)

Example:

取p = 11, q = 5, 所以(p-1)(q-1) = 40

N = pq = 55, gcd(3, 40) = 1, e = 3

d = 3^-1 mod 40 = 27

所以

加密 y = x^3 mod 55

解密 x = y^27 mod 55

RSA安全性在于,若不知道d,知道了y要解出x是很困难的。

原文地址:https://www.cnblogs.com/chenyg32/p/3017806.html