- 1
- 0
- 约1.65千字
- 约 9页
- 2019-08-01 发布于山西
- 举报
PAGE
PAGE 1
北京信息科技大学
信息管理学院
(课程上机)实验报告
实验课程名称: 密码学 专业: 班级: 学号: 姓名: 成绩:
实验名称
公钥密码算法实验
实验地点
1-
实验时间
2016.05.26
实验目的:
使学生通过对各种公钥密码算法主要参数和其部分模块功能的验证,理解对公钥密码算法中主要参数的基本要求,从而深入理解公钥密码算法的设计原理。
实验内容:
1) 在信息安全实验系统中完成RSA算法和ElGamal算法的系列实验。
2) 复习教材上的Miller-Rabin素性检验算法和扩展的欧几里德算法,并编写程序将其实现,并分析实验结果。
实验要求:
1)通过完成信息安全实验系统中的RSA算法实验和ElGamal算法实验来验证算法中主要参数的选择和产生。
2)用C语言编写程序实现RSA算法中使用的Miller-Rabin素性检验算法和扩展的欧几里德算法,整理程序代码文档,记录程序运行结果。
实验准备:
5实验过程:
;
#include stdio.h
#define false 0
#define true 1
int second(int m,int *k)
{
int i;
i=0;
while((m/2)!=0){
*k=m%2;
m=m/2;
k++;
i++;}
*k=1;
i++;
return i;
};
int main()
{
int n,a,b[10],i,d,x,t;
printf(请?输o?入¨?一°?个?整?数oy\n);
scanf(%d,n);
i=second(n-1,b);
printf(i);
d=1;
a=5;
for(t=i;i0;t--){
x=d;
d=(d*d)%n;
if(d=1x!=1x!=n-1)
return false;
if(b[i-t]=1)
d=(d*a)%n;
}
if(d!=1)
{return false;
}
printf(true);
return true;
}
2.
#includestdio.h
long exEucli(long a,long b,long x,long y,long n)
{
if(b == 0){ x = 1; y = 0; return a;
}
n+=1;
long r = exEucli(b, a%b, x, y,n);
long t = y;y = x - (a/b)*y;x = t;
return r;
}
int main()
{
long a,b,x,y,n=0,t;
printf(enter the first number:\n);
scanf(%ld,a);
printf(enter the second number:\n);
scanf(%ld,b);
if(ab){t=a;a=b;b=t;
} exEucli(a,b,x,y,n);
printf(gcd=%ld\n,a*x+b*y);
printf(迭代次数:%ld\n,n);
return 0;
}
6.实验总结:
说明:
实验名称、实验目的、实验内容、实验要求由教师确定,实验前由教师事先填好,然后作为实验报告模版供学生使用;
实验准备由学生在实验或上机之前填写,教师应该在实验前检查;
实验过程由学生记录实验的过程,包括操作过程、遇到哪些问题以及如何解决等;
实验总结由学生在实验后填写,总结本次实验的收获、未解决的问题以及体会和建议等;
源程序、代码、具体语句等,若表格空间不足时可作为附录另外附页。
原创力文档

文档评论(0)