一,密钥的产生
① 选两个保密的大素数 p 和 q(典型值为1024位)。
② 计算 n=p×q,φ(n)=(p-1)(q-1)其, 中 φ(n)是 n 的欧拉函数值。
③ 选一整数 e,满足 1 ,且 gcd(φ(n),e)=1。
④ 计算 d,满足 d·e≡1 mod φ(n),即 d 是 e 在模 φ(n)下的乘法逆元,因 e 与 φ(n)互素, 由模运算可知,它的乘法逆元一定存在。
⑤ 以{e,n}为公开钥,{d,n}为秘密钥。
二,加密
① 将明文看成比特串,将明文划分成k位的块P即可,这里k是满足2*k<n的最大整数。
② 对每个数据块P,计算C=P^(mod n),C即为P的密文。
三,解密
对每个密文块c,计算P+C^d(mod n),P即为明文
图1 算法流程图
图2 加密流程
图3 解密流程