RSA算法简介
一、 RSA算法简述
在RSA密码体制中,每个用户都拥有两个密钥:公钥PK={e,n}和私钥SK={d,n}。公钥PK={e,n}用于加密,也成为加密密钥,可以再网络、电话簿等媒体上进行公布。私钥SK={d,n}用于解密,也称为解密密钥,必须保密。每个用户把加密密钥PK公开,使得系统中任何其他用户都可以使用,而对解密密钥SK中的d必须严格保密。
二、密钥生成
1、选取两个保密的大素数p和q。(实际应用中,这两个质数越大,就越难破解。)
2、计算n=p*q。n称为RSA算法的模数。
3、φ(n) = (p-1)(q-1),其中φ(n)是n的欧拉函数值。
4、选取一个随机整数e(即加密密钥),使之满足1< e < φ(n),随机选择一个整数e,且e与φ(n) 互质。
5、计算解密密钥d,满足e*d ≡ 1 (mod φ(n))。
即e对于φ(n)的模反元素d。
所谓”模反元素”就是指有一个整数d,可以使得ed被φ(n)除的余数为1。
这个式子等价于
e*d - 1 = kφ(n)
于是,找到模反元素d,实质上就是对下面这个二元一次方程求解。
ex + φ(n)y = 1
这个方程可以用”扩展欧几里得算法”求解,因为e与φ(n)互素,由模运算可知他的乘法逆元一定存在。
三、可靠性
回顾上面的密钥生成步骤,一共出现六个数字:
p