RSA算法

来源:互联网 发布:vmware mac os 慢 编辑:程序博客网 时间:2024/06/05 03:25

RSA 算法是一个很重要的加密算法,在有网络通信的地方基本都有 RSA 算法。RSA 算法的思想很容易理解,但是计算量却十分庞大,这也是为什么说 RSA 算法很安全的原因。我们通过一个简单的例子来认识一下 RSA 算法。

首先 RSA 算法要生成一个密钥对,密钥生成的步骤:

第一步:RSA 的首要任务是要选两个大素数 p,q ;比如我选择 3 和 11(实际的 RSA 算法选择的素数是很大的,这里为了方便演示,这里选择两个很小的素数)

第二步:计算 n = p*q,n 就是密钥长度,这个值越大越安全。即 n = 3*11 = 33,33写成二进制的形式是 100001,共六位,所以这里的密钥长度为 6。目前能破解的 RSA 密钥长度为 768 位。实际应用中,RSA 密钥长度一般是 1024 位,有些重要场合甚至是 2048 位

第三步:计算 n 的欧拉函数 ø(n) = (p-1)(q-1);即 ø(n) =(3-1)*(11-1)= 20

第四步:选 e,e 满足 1 < e < ø(n),并且 gcd[e,ø(n)] = 1(即 e 与 ø(n) 互为素数);这里选 e = 7

第五步:求 d,根据公式 e*d ≡ 1mod[ø(n)] 可得 7*d ≡ 1mod 20,即 7d - 1 = 20β,(β∈Z),即 7d - 20β = 1。相当于求解二元一次方程 7x – 20y = 1 ,解得 x =3 ,y =1 ,即 d =3

第六步:将 n 和 e 封装成公钥,n 和 d 封装成私钥。所以公钥为(33,7)私钥为(33,3),公钥公布给所有要给自己发信息的用户,私钥自己保密

算出公钥和私钥后就可以进行加密运算了。这里有两个重要的公式
这里写图片描述

其中C为密文,M 为明文

例如我要对 19 这个明文进行加密,C=19^7 mod33=13,即明文 19 的密文位13

对方接收到密文后通过解密公式 M=C^d mod(n) 可得,M=13^3 mod33=19

原创粉丝点击