公钥体系基于大数难以分解的理论。
去素数:p=3,q=5
RSA算法的模数:n=15
n的欧拉数f(n)=(p-1)(q-1)=2*4=8
公钥e和私钥d满足:d*e mod 8 = 1
可取d*e=33,d可取3,e可取11。
公钥PK={e, n},私钥SK={d, n}
加密时:c=m^e mod n
解密是:m=c^d mod n
数据分组m,不得大于n
m=7时,c=7^11 mod 15 = 13
解密时:m=c^3 mod 15 = 7
该算法的另外一种描述:
首先, 找出三个数, p, q, r,
其中 p, q 是两个相异的质数, r 是与 (p-1)(q-1) 互质的数.
p, q, r 这三个数便是 private key.
接著, 找出 m, 使得 rm == 1 mod (p-1)(q-1).
这个 m 一定存在, 因为 r 与 (p-1)(q-1) 互质, 用辗转相除法就可以得到了.
再来, 计算 n = pq.
m, n 这两个数便是 public key.