Cony公钥密码算法实验.docx

上传人:b****8 文档编号:9352869 上传时间:2023-02-04 格式:DOCX 页数:13 大小:659.63KB
下载 相关 举报
Cony公钥密码算法实验.docx_第1页
第1页 / 共13页
Cony公钥密码算法实验.docx_第2页
第2页 / 共13页
Cony公钥密码算法实验.docx_第3页
第3页 / 共13页
Cony公钥密码算法实验.docx_第4页
第4页 / 共13页
Cony公钥密码算法实验.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

Cony公钥密码算法实验.docx

《Cony公钥密码算法实验.docx》由会员分享,可在线阅读,更多相关《Cony公钥密码算法实验.docx(13页珍藏版)》请在冰豆网上搜索。

Cony公钥密码算法实验.docx

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.源程序、代码、具体语句等,若表格空间不足时可作为附录另外附页。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1