资源描述:
《网络信息安全试验报告(2)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、西安理工大学高科学院实验报告用纸网络信息安全试验报告-RSA加密算法的实现姓名:拓慧玲学号:20907210专业:09信管2班指导老师:吕林涛4西安理工大学高科学院实验报告用纸一、实验目的通过本次实验,掌握RSA算法的基本思想。使用C语言实现RSA算法,并且可以对简单数字串进行加密、解密。二、实验原理通过查阅资料,了解RSA算法基本思想。首先,找出三个数,p,q,r,其中p,q是两个相异的质数,r是与(p-1)(q-1)互质的数。p,q,r这三个数便是privatekey(私钥)接著,计算m,r*m==1mod(p-1)(q-1).....这个
2、m一定存在,因为r与(p-1)(q-1)互质,用辗转相除法就可以得到了.....再来,计算n=pq.......m,n这两个数便是publickey(公钥)。编码过程是:若明文为a,将其看成是一个大整数,假设a=n的话,就将a表成s进位(s<=n,通常取s=2^t),则每一位数均小於n,然后分段编码......接下来,计算b==a^mmodn,(0<=b3、,必须想办法得到r。.所以,他必须先对n作质因数分解。但是n往往是非常大的数,同时还有两个非常的大质数p,q,使第三者作因数分解时发生困难。对方往往很难破解出明文。三、实验源码#include#include#includeintgetd(intp,intq,inte){intqn,d=1;qn=(p-1)*(q-1);while(d){if(d*e%qn==1)return(d);elsed++;}}/*getd*/intpower(inta,intb){intmut=1;while(b!
4、=0){mut*=a;b--;}4西安理工大学高科学院实验报告用纸returnmut;}/*power*/intjiemi(inte,intn,intp){intq;q=power(p,e)%n;returnq;}/*jiemi*/intjiami(inte,intn,intp){intq;q=power(p,e)%n;returnq;}/*jiami*/intmain(){intprime1,prime2,p;intd,e,n,miwen,minwen;intgetd(intp,intq,inte);printf("请输入两个大的素数和公钥,
5、e和n");scanf("%d%d%d",&prime1,&prime2,&e);n=prime1*prime2;printf("n为%d",n);d=getd(prime1,prime2,e);printf("私有密钥是%d",d);/*其中e和n为共钥,d为私钥*/printf("请输入要加密的数字串");scanf("%d",&p);while(p!=0){miwen=jiami(e,n,p);printf("加密的数值是%d",miwen);minwen=jiemi(d,n,miwen);printf("解密后的
6、数值为;%d",minwen);scanf("%d",&p);break;}}4西安理工大学高科学院实验报告用纸四、实验结果五、实验总结通过此次实验,我了解了公钥密码体制的基本思想,基本掌握了公钥密码体制RSA。在此次实验中,我又复习了许多以前的旧算法,巩固了基础知识。更加深入的了解安全算法的体制,以及如何分析一个安全算法。同时,也让我学会如何更加熟练的使用C语言进行编程。无论编写何种软件,了解其思想和过程都是很重要的。思想就是算法,过程就是程序。刚开始写RSA算法时,就是对RSA的思想和过程不清楚,造成了编写困难。通过在网上查阅资料,下来
7、仔细看书。掌握了基本思想后编写相关程序就很简单了就很简单了。在编写中,总是不注意一些小细节。例如分号,函数声明和调用,全局量与局部量等。但是随着不断修改、不断上机实验,我已经慢慢习惯于C语言式的思考---分解问题。但是在分解问题前,最好画上详细的流程图及创建相关变量。这一点我做的并不好,仍需要努力。4