RSA的加密过程可以使用一个通式来表达
密文=明文E mod N
也就是说RSA加密是对明文的E次方后除以N后求余数的过程。
从通式可知,只要知道E和N任何人都可以进行RSA加密了,所以说E、N是RSA加密的密钥,也就是说E和N的组合就是公钥,我们用(E,N)来表示公钥
公钥 = (E,N)
不过E和N不并不是随便什么数都可以的,它们都是经过严格的数学计算得出的,E是加密(Encryption)的首字母,N是数字(Number)的首字母。
RSA解密
明文 = 密文D mod N
也就是说对密文进行D次方后除以N的余数就是明文,这就是RSA解密过程。知道D和N就能进行解密密文了,所以D和N的组合就是私钥
私钥=(D,N)
从上述可以看出RSA的加密方式和解密方式是相同的,加密是求“E次方的mod N”;解密是求“D次方的mod N” 此处D是解密(Decryption)的首字母;N是数字(Number)的首字母。
生成密钥对(E,D,N)的步骤:
1.求N
准备两个质数p,q。这两个数不能太小,太小则会容易破解,将p乘以q就是N
N = p * q
2. 求L(L为中间过程的中间数)
L 是 p-1 和 q-1的最小公倍数,可用如下表达式表示
L=lcm(p-1,q-1)
3 .求E
E必须满足两个条件:E是一个比1大比L小的数,E和L的最大公约数为1
用gcd(X,Y)来表示X,Y的最大公约数则E条件如下:
1 < E < L
gcd(E,L)=1
之所以需要E和L的最大公约数为1是为了保证一定存在解密时需要使用的数D。现在我们已经求出了E和N也就是说我们已经生成了密钥对中的公钥了。