RSA算法的加密过程如下:
- 选择两个大素数①p和q,计算它们的乘积n=p*q
- 计算欧拉函数φ(n)=(p-1)*(q-1)
- 选择一个整数e,满足1<e<φ(n),且e与φ(n)互质
- 计算e关于φ(n)的模逆元d,即满足e*d mod φ(n) = 1的整数d②
- 公钥为(n,e),私钥为(n,d)。
例子:
p q 为两个质数, p=11 q=31
N=p*q=341
Φ(n)=(p-1)*(q-1)=300
E与φ(n)互质 E=7
E * D mod φ(n)=1
7*D mod 300=1
301 =7*43
D=43
明文*e次mod n = 密文
选择明文为:9
密文:103
密文*d次 mod n = 明文
注:
①素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
②mod运算:
将 27 除以 12求余数这样的运算写成下列形式。
27 mod 12
27除以 12的余数
这个算式的结果是3,因此我们可以写成下面这样。
27 mod 12=3
27除以12的余数等于3