一、关于RSA算法
1.1 RSA产生公私钥对
- 1.随机选择两个不相等的质数p和q。
(实际应用中,这两个质数越大,就越难破解。) - 2.计算p和q的乘积n。
n的长度就是密钥长度。3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位。实际应用中,RSA密钥一般是1024位,重要场合则为2048位。 - 3.计算n的欧拉函数φ(n)。称作Q
根据公式φ(n) = (p-1)(q-1) - 4.随机选择一个整数e,也就是公钥当中用来加密的那个数字
条件是1< e < φ(n),且e与φ(n) 互质。 - 5.计算e对于φ(n)的模反元素d。也就是密钥当中用来解密的那个数字
所谓"模反元素"就是指有一个整数d,可以使得ed被φ(n)除的余数为1。ed = 1 (mod φ(n)) - 6.将n和e封装成公钥,n和d封装成私钥。
1.2 RSA加密
首先对明文进行比特串分组,使得每个分组对应的十进制数小于n,然后依次对每个分组m做一次加密,所有分组的密文构成的序列就是原始消息的加密结果,即m满足0<=m<n,则加密算法为:
c= m^e mod n; c为密文,且0<=c<n。
1.3 RSA解密
对于密文0<=c<n,解密算法为:
m= c^d mod n;