您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > Cony公钥密码算法实验
1北京信息科技大学信息管理学院(课程上机)实验报告实验课程名称:密码学专业:信息安全班级:信安140学号:姓名:Cony成绩:实验名称公钥密码算法实验实验地点1-3-702实验时间2016.05.261.实验目的:使学生通过对各种公钥密码算法主要参数和其部分模块功能的验证,理解对公钥密码算法中主要参数的基本要求,从而深入理解公钥密码算法的设计原理。2.实验内容:1)在信息安全实验系统中完成RSA算法和Elgamal算法的系列实验。2)复习教材上的Miller-Rabin素性检验算法和扩展的欧几里德算法,并编写程序将其实现,并分析实验结果。1.2345672.#includestdio.h#includemath.h#includemalloc.hint*decToBin(intn){inti=0;for(i=0;i8;i++){if((n&128)==0){n=n1;}else{break;}}i--;int*temp;temp=(int*)malloc((n-i+1)*sizeof(int));*temp=n-i+1;temp++;for(i;i8;i++){if((n&128)==0){8n=n1;*temp=0;}else{n=n1;*temp=1;}temp++;}returntemp;}intwitness(inta,intn){intx,d=1;//doublec=log(n-1)/((double)log(2));//intk=int(c)+1;inti=0;int*temp=decToBin(n-1);temp=(int*)malloc((*temp)*sizeof(int));for(i=*temp;i0;i--){x=d;d=(d*d)%n;if(d==1&&x!=1&&x!=(n-1))return0;if(*temp==1){d=(d*a)%n;}temp++;}if(d!=1)return0;return1;}intmain(){if(witness(5,7)==1)printf(resultistrue);else9printf(resultisfalse);return0;}#includestdio.h#includemath.h#includemalloc.hinteuclid(intf,intd){inttemp;temp=f%d;while(temp!=0){f=d;d=temp;temp=f%d;}returnd;}intExtendedEuclid(intf,intd,int*result);intmain(){intx;ExtendedEuclid(550,1769,&x);10printf(gcd(18,12)=%d\n,euclid(18,12));printf(550关于1769的乘法逆元为:%d,x);return0;}intExtendedEuclid(intf,intd,int*result){intx1,x2,x3,y1,y2,y3,t1,t2,t3,q;x1=y2=1;x2=y1=0;x3=(f=d)?f:d;y3=(f=d)?d:f;while(1){if(y3==0){*result=x3;return0;}if(y3==1){*result=y2;return1;}q=x3/y3;t1=x1-q*y1;t2=x2-q*y2;t3=x3-q*y3;x1=y1;x2=y2;x3=y3;y1=t1;y2=t2;y3=t3;}}113.实验要求:1)通过完成信息安全实验系统中的RSA算法实验和ElGamal算法实验来验证算法中主要参数的选择和产生。2)用C语言编写程序实现RSA算法中使用的Miller-Rabin素性检验算法和扩展的欧几里德算法,整理程序代码文档,记录程序运行结果。4.实验准备:125实验过程:;6.实验总结:说明:1.实验名称、实验目的、实验内容、实验要求由教师确定,实验前由教师事先填好,然后作为实验报告模版供学生使用;2.实验准备由学生在实验或上机之前填写,教师应该在实验前检查;3.实验过程由学生记录实验的过程,包括操作过程、遇到哪些问题以及如何解决等;4.实验总结由学生在实验后填写,总结本次实验的收获、未解决的问题以及体会和建议等;5.源程序、代码、具体语句等,若表格空间不足时可作为附录另外附页。13
本文标题:Cony公钥密码算法实验
链接地址:https://www.777doc.com/doc-2906839 .html