RSA算法逻辑
1 选择一对不同的、足够大的素数p,q。
2 计算n=pq。
3 计算f(n)=(p-1)(q-1)
4 找一个与f(n)互质的数e,且1<e<f(n)。
5 计算d,使得de≡1 mod f(n)。这个公式也可以表达为d ≡ mod f(n)
6 公钥KU=(e,n),私钥KR=(d,n)。
7 加密时,先将明文变换成0至n-1的一个整数M。若明文较长,可先分割成适当的组,然后再进行交换。设密文为C,则加密过程为:
8 解密过程为:
RSA 参数的选择
安全性方面需注意参数的选取:(建议参考:《应用密码学》2017版 P156-P157)
1、不同的用户不能用相同的模数 n,即一个模数只能一个人用
2、p 和 q 的差值要大,一般相差几个 bit ,比如:n 为 1024 bit 时,p 取 508 bit ,q 取 516 bit,如果 n 为 2048 bit,p q 就相差 12 bit 吧
3、p-1 和 q-1 都应有大的素因子,就是说 一般这样选择两个大素数(即先选择素数 p1 与 p2,使得 p=2p1+1 与 q=2q1+1 也是素数),要选择这样的 p