Cony公钥密码算法实验.docx
《Cony公钥密码算法实验.docx》由会员分享,可在线阅读,更多相关《Cony公钥密码算法实验.docx(13页珍藏版)》请在冰豆网上搜索。
![Cony公钥密码算法实验.docx](https://file1.bdocx.com/fileroot1/2023-2/3/4bcd18eb-d7d3-442c-a5c0-74b11ae39276/4bcd18eb-d7d3-442c-a5c0-74b11ae392761.gif)
Cony公钥密码算法实验
北京信息科技大学
信息管理学院
(课程上机)实验报告
实验课程名称:
密码学专业:
信息安全班级:
信安140学号:
姓名:
Cony成绩:
实验名称
公钥密码算法实验
实验地点
1-3-702
实验时间
2016.05.26
1.实验目的:
使学生通过对各种公钥密码算法主要参数和其部分模块功能的验证,理解对公钥密码算法中主要参数的基本要求,从而深入理解公钥密码算法的设计原理。
2.实验内容:
1)在信息安全实验系统中完成RSA算法和Elgamal算法的系列实验。
2)复习教材上的Miller-Rabin素性检验算法和扩展的欧几里德算法,并编写程序将其实现,并分析实验结果。
1.
2.#include"stdio.h"
#include"math.h"
#include"malloc.h"
int*decToBin(intn)
{
inti=0;
for(i=0;i<8;i++)
{
if((n&128)==0)
{
n=n<<1;
}
else
{
break;
}
}
i--;
int*temp;
temp=(int*)malloc((n-i+1)*sizeof(int));
*temp=n-i+1;
temp++;
for(i;i<8;i++)
{
if((n&128)==0)
{
n=n<<1;
*temp=0;
}
else
{
n=n<<1;
*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;i>0;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");
else
printf("resultisfalse");
return0;
}
#include"stdio.h"
#include"math.h"
#include"malloc.h"
inteuclid(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);
printf("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;
}
}
3.实验要求:
1)通过完成信息安全实验系统中的RSA算法实验和ElGamal算法实验来验证算法中主要参数的选择和产生。
2)用C语言编写程序实现RSA算法中使用的Miller-Rabin素性检验算法和扩展的欧几里德算法,整理程序代码文档,记录程序运行结果。
4.实验准备:
5实验过程:
;
6.实验总结:
说明:
1.实验名称、实验目的、实验内容、实验要求由教师确定,实验前由教师事先填好,然后作为实验报告模版供学生使用;
2.实验准备由学生在实验或上机之前填写,教师应该在实验前检查;
3.实验过程由学生记录实验的过程,包括操作过程、遇到哪些问题以及如何解决等;
4.实验总结由学生在实验后填写,总结本次实验的收获、未解决的问题以及体会和建议等;
5.源程序、代码、具体语句等,若表格空间不足时可作为附录另外附页。