1.RSA密钥生成算法
密钥生成算法为用户生成加解密算法中使用的公私密钥对,分为以下几个步骤:
(1)选取两个安全大素数p和q(“大”指其长度要足够,目前推荐长度至少1024比特长);
(2)计算乘积n=p*q,(n)=(p-1)(q-1),其中
(n)为n的欧拉函数;
(3)随机选取整数e(1<e<(n))作为公钥,要求满足gcd(e,
(n))=1,即e与
(n)互素;
(4)用Euclid扩展算法计算私钥d,以满足d*e≡1(mod(n)),即d≡
(mod
(n)),则e和n是公钥,d是私钥;
注意,加解密算法中两个素数p和q不再需要,可销毁但绝不能泄露。
例如:假设p=13,q=17;
计算 n=p*q=13*17=221,则(n)=(p-1)(q-1)=(13-1)*(17-1)=192.
选取公钥e=11(一般为素数),满足1<e<(n),且满足gcd(e,
(n))=1.通过Euclid扩展算法求得满足公式d*e≡1(mod192)的d=35.
所以,得到公钥(e,n)为(11,221),私钥d为35.
2.RSA加密算法
1)加密过程
加密时首先将明文比特串分组,使得每一个分组对应的十进制数小于n,即分组长度小于