欢迎来到天天文库
浏览记录
ID:19708523
大小:1.15 MB
页数:29页
时间:2018-10-05
《实验指导书计算机信息安全2011new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机信息安全实验指导书计算机工程学院2011年9月实验一RSA算法程序设计一、实验目的1.掌握公开密钥体制基本原理;2.熟悉RSA算法过程;3.提高学生的逻辑思维能力和编程技术。二、实验环境Pentium41.4GHz以上CPU,256M以上内存,10G以上硬盘,安装Windows2000以上操作系统。(写实验报告时,应是实际实验环境)三、实验内容与步骤1.分析RSA算法2.设计RSA算法实现流程图3.用C语言或其他语言实现RSA算法。4.设计产生素数程序模块5.设计求最大公约数模块6.设计求乘逆模块7.设计选择密钥算法
2、8.设计主程序实现RSA算法9.调试程序四、实验说明1.程序设计说明包括变量定义、模块组成、接口说明、使用方法、运行要求等。2.实验过程中所碰到问题和解决方法五、实验体会注意事项:1.提前预习,充分准备,明确设计思路、编程逻辑和算法过程。2.及时记录实验过程中所碰到问题和解决方法,并写到实验报告上。3.按照要求书写实验报告内容。4.写实验报告时,“实验环境”要和当前实验室的实验环境相同。附RSA算法程序#include#include#include#inclu
3、de#includeintr,sk,pk,Euler;primes1(intn1)//判断素数{inti,p1,n,sq,sq1;unsignedshortpritab2[10000];n=3;p1=1;pritab2[0]=2;pritab2[1]=3;do{n=n+2;sq=(int)sqrt(n);sq1=1,i=0;while((pritab2[i]<=sq)&(sq1!=0)){sq1=pritab2[i];sq1=n%sq1;i++;};if(sq1!=0){p1++,pri
4、tab2[p1]=n;}}while(n1);//最大公约数gcd(a,b)=1return(a);//返回初选密钥值}//检查n是
5、否是素数intcheck(intn){intsq1;n=abs(n);sq1=1;do{sq1=primes1(n);if(sq1==0)n=n-1;}while(sq1==0);returnn;//返回素数}voidprimes(){intp,q;cout<<"输入值不要太大,防止溢出"<>p;p=check(p);cout<<"请输入q:";cin>>q;q=check(q);r=p*q;cout<<"素数"<<"p="<6、q-1);cout<<"欧拉函数:"<=r){cout<<"m值太大,请再输入编码";m=abs(m);cin>>m;}returnm;//返回编码。}//使用"平方-乘"算法计算mmodrintpf_c(intm,intk){inta,i1,a1,b[50];unsignedlongc1;doublelongc;c=1;c1=1;i1=0;do//将十进制转换成二进制{a=(int)ceil(k/2);7、a1=(k%2);b[i1]=a1;k=a;i1++;}while(a>0);i1--;//"平方-乘"算法for(inti=i1;i>=0;i--){c=fmod(c*c,r);if(b[i]==1)c=fmod(c*m,r);}c1=(int)ceil(c);returnc1;}//欧几里德扩展算法求解sk*pk≡1modrvoidckey(){inta,c,b1,b2,p,q;cout<<"输入值不要太大,防止溢出"<>sk;sk++;do{sk--;sk=abs8、(sk);b1=1,b2=0;sk=gcd(sk,Euler);a=sk;c=Euler;do{q=(int)ceil(c/a);p=c%a;pk=b2-b1*q;c=a;a=p;b2=b1;b1=pk;}while(p!=1);pk=abs(pk);a=pf_c(9,sk);c=pf_c(a,pk);
6、q-1);cout<<"欧拉函数:"<=r){cout<<"m值太大,请再输入编码";m=abs(m);cin>>m;}returnm;//返回编码。}//使用"平方-乘"算法计算mmodrintpf_c(intm,intk){inta,i1,a1,b[50];unsignedlongc1;doublelongc;c=1;c1=1;i1=0;do//将十进制转换成二进制{a=(int)ceil(k/2);
7、a1=(k%2);b[i1]=a1;k=a;i1++;}while(a>0);i1--;//"平方-乘"算法for(inti=i1;i>=0;i--){c=fmod(c*c,r);if(b[i]==1)c=fmod(c*m,r);}c1=(int)ceil(c);returnc1;}//欧几里德扩展算法求解sk*pk≡1modrvoidckey(){inta,c,b1,b2,p,q;cout<<"输入值不要太大,防止溢出"<>sk;sk++;do{sk--;sk=abs
8、(sk);b1=1,b2=0;sk=gcd(sk,Euler);a=sk;c=Euler;do{q=(int)ceil(c/a);p=c%a;pk=b2-b1*q;c=a;a=p;b2=b1;b1=pk;}while(p!=1);pk=abs(pk);a=pf_c(9,sk);c=pf_c(a,pk);
此文档下载收益归作者所有