- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RSA加解密过程及实现
RSA加解密过程及实现
PAGE
RSA加解密过程及实现
********************
本科生作业
********************
兰州理工大学
计算机与通信学院
2017年春季学期
信息安全 课程
专 业: 物联网工程
姓 名:
学 号:
授课教师: 郭显
成 绩:
RSA加解密过程及其实现
概述
RSA算法
RSA加密算法是一种最常用的非对称加密算法,CFCA在证书服务中离不了它。在公钥加密标准和电子商业中,RSA被广泛使用。 RSA算法使用乘方运算,明文以分组为单位进行加密,每个分组的二进制值均小于,也就是说,分组的大小必须小于或等于位,在实际应用中,分组的大小位,其中。对明文分组M和密文分组C,加密和解密过程如下:
其中收发双方均已知n,发送方已知e,只有接收方已知d,因此公钥加密算法的公钥为PU={e,n},私钥为PR={d,n}。该算法要能做公钥加密,必须满足以下条件:
可以找到e,d,n,使得对所有的Mn,有。
对所有的Mn,计算和是比较容易的。
由和确定是不可行的。
公钥与私钥
(1)随意选择两个大素数和,不等于,计算。
(2)根据欧拉函数,不大于且与互素的整数个数为
(3)选择一个整数与互素,并且小于
(4)用以下这个公式计算:
(5)将和的记录销毁。是公钥,是私钥。是秘密的。Alice将她的公钥传给Bob,而将她的私钥藏起来。
图1 RSA加密过程
2.实例描述
选择两个素数,。
计算。
计算。
选择使其与互素且小于,这里选择。
确定使得且。因为,所以。可利用扩展的欧几里得算法来计算。
所得的公钥、私钥。该例说明了输入明文时这些密钥的使用情况。加密时需计算。利用模算术的性质,我们如下计算:
解密时,我们计算
算法的安全性
在RSA密码应用中,公钥是被公开的,即和的数值可以被第三方窃听者得到。破解RSA密码的问题就是从已知的和的数值(等于),想法求出的数值,这样就可以得到私钥来破解密文。从上文中的公式:或我们可以看出。密码破解的实质问题是:从的数值,去求出和。换句话说,只要求出和的值,我们就能求出的值而得到私钥。当和是一个大素数的时候,从它们的积去分解因子和,这是一个公认的数学难题。比如当大到1024位时,迄今为止还没有人能够利用任何计算工具去完成分解因子的任务。然而,虽然RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的必威体育官网网址性能如何。此外,RSA的缺点还有:
A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。
B)分组长度太大,为保证安全性,至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。因此,使用RSA只能加密少量数据,大量的数据加密还要靠对称加密算法。
4.程序代码
#include
int rsa(int a,int b,int c)
{ int r=1;
b=b+1;
while(b!=1)
{
r=r*a;
r=r%c;
b--;
}
printf(%d\n,r);
return r;
}
void main()
{
int p,q,e,d,m,n,t,c,r;
char s;
printf(请输入 p,q: );
scanf(%d%d,p,q);
n=p*q;
printf( n 的值是 %4d\n,n);
t=(p-1)*(q-1); 序测试结果
图2 RSA加密
图3 RSA解密
总结:通过c语言的程序实现对RSA算法的理解加深了。
文档评论(0)