您的位置:首页 > 其它

RSA算法简介

2007-01-26 08:41 453 查看
RSA算法简介

1 简介

当前最著名、应用最广泛的公钥系统RSA是在1978年,由美国麻省理工学院(MIT)的Rivest、Shamir和Adleman在题为《获得数字签名和公开钥密码系统的方法》的论文中提出的。它是一个基于数论的非对称(公开钥)密码体制,是一种分组密码体制。其名称来自于三个发明者的姓名首字母。 它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保RSA算法的安全性。RSA系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。

RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。

该算法基于下面的两个事实,这些事实保证了RSA算法的安全有效性:
1) 已有确定一个数是不是质数的快速算法;
2) 尚未找到确定一个合数的质因子的快速算法。

2 工作原理

1) 任意选取两个不同的大质数p和q,计算乘积r=p*q;
2) 任意选取一个大整数e,e与(p-1)*(q-1)互质,整数e用做加密密钥。注意:e的选取是很容易的,例如,所有大于p和q的质数都可用。
3) 确定解密密钥d: d*e modulo (p - 1)*(q - 1) = 1 根据e、p和q可以容易地计算出d。
4) 公开整数r和e,但是不公开d;
5) 将明文P (假设P是一个小于r的整数)加密为密文C,计算方法为:
C = pow(P,e) modulo r
6) 将密文C解密为明文P,计算方法为:
P = pow(C,d) modulo r
然而只根据r和e(不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密。

3 简单实例

为了说明该算法的工作过程,我们下面给出一个简单例子,显然我们在这只能取很小的数字,但是如上所述,为了保证安全,在实际应用上我们所用的数字要大的多得多。

例:选取p=3, q=5,则r=15,(p-1)*(q-1)=8。选取e=11(大于p和q的质数),通过d * 11 modulo 8 = 1 ,计算出d =3。
假定明文为整数13。则密文C为
C = pow(P,e) modulo r
= pow(13,11) modulo 15
= 1,792,160,394,037 modulo 15
= 7
复原明文P为:
P = pow(C,d) modulo r
= pow(7,3) modulo 15
= 343 modulo 15
= 13
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: