号称世界上最重要的加密算法
生成步骤
甲要向乙进行通信,要生成私钥和公钥
一. 甲方随机生成两个质数a (61), b(53),实际上质数越大,就越难破解
二. 计算 a和b的乘积 n
n的长度就是秘钥的长度,n = 61×53 = 3233, 写成二进制是110010100001,一共有12位,所以这个密钥就是12位,实际应用中,RSA密钥一般是1024位,重要场合则为2048位
三、计算n的欧拉函数φ(n) —φ(n) = (p-1)(q-1)
φ(3233)等于60×52,即3120
四、随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质
甲 就在1到3120之间,随机选择了17。(实际应用中,常常选择65537。)
五、计算e对于φ(n)的模反元素d
ed ≡ 1 (mod φ(n)) ======》 ed - 1 = kφ(n)
17d - k3120 = 1; (d,k) = (2753,-15)
六、将n和e封装成公钥,n和d封装成私钥。
n=3233,e=17,d=2753,所以公钥就是 (3233,17),私钥就是(3233, 2753)
n和e 构成公钥
n和d 构成私钥
加密和解密
加密
m^e ≡ c (mod n)
解密
c^d ≡ m (mod n)