一、原理
RSA算法基于:加密和解密数据围绕模幂运算(即,计算a^b mod n)。
二、计算公钥和私钥
- 首先生成两个大素数,p和q,计算乘积
n = pq - 选择一个小的奇数
e,它将成为公钥一部分,且gcd(e, (p-1)(q-1))= 1(gcd,最大公约数) - 再计算
d = e^(-1) mod (p-1)(q-1),即可得到私钥的一部分d。 - 此时公钥
P = (e, n),私钥S = (d, n)。 - 加密过程:c = m^e mod n
- 解密过程:d = c^d mod n
(第5步和第6步用到欧拉定理,(p-1)(q-1)是所有小于n且与n互素的值的个数,从而根据欧拉定理值,m^((p-1)(q-1)) = 1 mod n)而e * d = 1 mod ((p-1)(q-1)),从而得到m^(e*d) = m mod n。