2023年信息安全与密码学实验报告_第1页
2023年信息安全与密码学实验报告_第2页
2023年信息安全与密码学实验报告_第3页
2023年信息安全与密码学实验报告_第4页
2023年信息安全与密码学实验报告_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

s

m6

R9

sA

O

aO

W

《信息安全与密码学》实验报告

姓名:________________________

学号:________________________

学院:________________________

班级:

成绩:

2023年12月31日

目录

1移位密码错误!未定义书签。

1.1算法原理.….错误!未定义书签

L2实现过程.....错误!未定义书签

1.2.1程序代码错误!未定义书签

L2.2运营界面.错误!未定义书签

2置换密码........错误!未定义书签

2.1算法原理.....错误!未定义书签

2.2实现过程.....错误!未定义书签

2.2.1程序代码错误!未定义书签

2.2.2运营界面.错误!未定义书签

3维吉尼亚密码........错误!未定义书签

3.1算法原理....错误!未定义书签

3.2实现过程....错误!未定义书签

3.2.1程序代码错误!未定义书签

3.2.1运营界面错误!未定义书签

4Eulid算法.........................................错误!未定义书签。

4.1算法原理.....................................错误!未定义书签。

4.2实现过程.....................................错误!未定义书签。

4.2.1程序代码...................................错误!未定义书签。

4.2.2运营界面...................................错误!未定义书签。

5Eulid扩展算法.....................................错误!未定义书签。

5.1算法原理.....................................错误!未定义书签。

5.2实现过程.....................................错误!未定义书签。

5.2.1程序代码...................................错误!未定义书签。

5.2.2运营界面...................................错误!未定义书签。

6素性检查...........................................错误!未定义书签。

6.1算法原理......................................错误!未定义书签。

6.2实现过程......................................错误!未定义书签。

6.2.1程序代码....................................错误!未定义书签。

6.2.2运营界面...................................错误!未定义书签。

7用DES算法完毕数据的加密和解密....................错误!未定义书签。

7.1算法原理......................................错误!未定义书签。

7.2算法程序.....................................错误!未定义书签。

7.2.1算法的功能类代码..........................错误!未定义书签。

7.2.2窗体类代码.................................错误!未定义书签。

7.3运营界面.....................................错误!未定义书签。

8RSA算法的计算机实现................................错误!未定义书签。

8.1算法原理.....................................错误!未定义书签。

8.2算法程序......................................错误!未定义书签。

8.2.1算法功能类代码.............................错误!未定义书签。

8.2.2算法窗体代码................................错误!未定义书签。

8.3运营界面.....................................错误!未定义书签。

9PGP加密软件的应用..................................错误!未定义书签。

9.1软件介绍.....................................错误!未定义书签。

9.2安装过程及重要界面...........................错误!未定义书签。

9.3完毕的重要功能...............................错误!未定义书签。

9.3.1密钥的生成、传播和废除.....................错误!未定义书签。

9.3.2数字署名...................................错误!未定义书签。

9.3.3验证署名...................................错误!未定义书签。

9.3.4对文献加密和解密(创建一个自解压文献)...错误!未定义书签。

10信息安全与密码学上机实践体会.....................错误!未定义书签。

1移位密码

1.1算法原理

密码体制

令P=C=K=Z26o对0<K<25,任意x,>£226,定义

eK(x)=(x+K)mod26

以及

盛(>)=(y-K)mod26

若取K=3,则此密码体制通常叫做凯撒密码(CaesarCipher),由于它一

方面为儒勒•凯撒所使用。

使用移位密码可以用来加密普通的英文句子,但是一方面必须建立英文字母和

模26剩余之间的一一相应关系:如A—0,8—1,…,Z—25。将其列表如下:

ABCDEFG£JKLM

0123456789101112

N0PQRSTUVWXYZ

13141516171819202122232425

L2实现过程

1.2.1程序代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

usingSystem.Windows.Forms;

namespacemimaxue46.FormsClass

(

publicpartialclassyiwei:Form

(

publicyiwei()

{

InitializeComponent();

}

privatevoidtextBoxl_KeyPress(objectsender,KeyPressEventArgse)

}

privatevoidbuttonlClick(objectsender,EventArgse)

textBox3.Clear();

string[]aa=newstring[26];

aa[0]=a”;aa[l]二b〃;aa[2]=aa[3]=〃d〃;aa[4]="e

aa[5]=f”;aa[6]=g〃;aa[7]aa[8]aa[9]=

aa[10]=“k〃;aa[U]T;aa[12]"m〃;aa[13]〃n〃;aa[14]=o

aa[15]"p";aa[16]"q";aa[17]aa[18]"s";aa[19]

aa[20]二u”;aa[21]aa[22]w〃;aa[23]aa[24]=y

aa[25]=z

string口aa2=newstring[26];

aa2[0]〃A〃;aa2[l]="B";aa2[2]〃C〃;aa2[3]D”;aa2[4]

aa2[5]="F";aa2[6]=V;aa2[7]〃H〃;aa2[8]T;aa2[9]

aa2[10]=〃K〃;aa2[ll]="〃;aa2[12]=〃M〃;aa2[13]=〃N〃;aa2[14]="0";

aa2[15]="P";aa2[16]=〃Q〃;aa2[17]=〃R”;aa2[18]="S〃;aa2[19]=T;

aa2[20]="U";aa2[21]="V";aa2[22]="W";aa2[23]="X";aa2[24]=

aa2[25]="Z";

try

(

#region

inta=Convert.ToIntl6(textBoxl.Text);

stringtx=textBox2.Text;

intle=tx.Length;

int[]bb=newint[le];

string[]txt=newstring[le];

for(inti=0;i<le;i++)

{

txt[i]=tx[i].ToStringO;

"/获得明文

string[]txt2=newstring[le];

for(intj=0;j<le;j++)

{

for(intm=0;m<26;m++)

(

if(txt[j]==aa[m])

(

bb[j]=(m+a)%26;

txt2[j]=aa2[bb[j]];

}

)

"/获得密文

stringtx2=

for(intn=0;n<le;n++)

tx2+=txt2[n];

textBox3.Text=tx2;

ttendregion

catch

MessageBox.Show("请输入对的格式的秘钥以及明文“);

privatevoidbutton2_Click(objectsender,EventArgse)

textBox6.Clear();

string[]aa=newstring[26];

aa[0]="a";aa[l]="b";aa[2]="c";aa[3]=〃d〃;aa[4]="e

aa[5]="f";aa[6]="g";aa[7]="h";aa[8]="i";aa[9]="j

aa[10]=k”;aa[ll]="1";aa[12]m”;aa[13]"n";aa[14]o

aa[15]=p”;aa[16]=〃q”;aa[17]aa[18]aa[19]

z

aa[20]=V;aa[21]="v";旬22]aa[23]"x";aa[24]y

aa[25]=

string[]aa2=newstring[26];

aa2[0]〃A〃;aa2[l]〃B〃;aa2[2]〃C〃;aa2[3]〃D〃;aa2[4]E〃;

aa2[5]=〃F〃;aa2[6]=〃G〃;aa2[7]〃H〃;aa2[8]T;aa2[9]

aa2[10]="K〃;aa2[ll]=〃L〃;aa2[12]=〃M〃;aa2[13]="N";aa2[14]=〃0〃;

aa2[15]"P〃;aa2[16]〃Q〃;aa2[17]=〃R”;aa2[18]="S";aa2[19]="T

aa2[20]Vz;aa2[21]aa2[22]=〃y;aa2[23]=〃X";aa2[24]=〃Y

aa2[25]二

try

inta=Convert.ToIntl6(textBox4.Text);

stringtx=textBox5.Text;

intle=tx.Length;

string[]txt=newstring[le];

for(inti=0;i<le;i++)

{

txt[i]=tx[i].ToStringO;

}〃获得密文

string[]txt2=newstringEle];

for(intj=0;j<le;j++)

(

for(intm=0;m<26;m++)

(

if(txt[j]==aa2[m])

(

intn=m-a;

if(n<=0)

(

n=n+26;

txt2[j]=aa[n%26];

)

else

(

txt2[j]=aa[n%26];

)

)

)

stringtx2=

for(intn=0;n<le;n++)

{

tx2+=txt2[n];

)

textBox6.Text=tx2;

)

catch

(

MessageBox.Show(”请输入对的的秘钥以及密文”);

)

)

}

L2.2运营界面

Forml

置换定码移位密码维吉尼亚定码Eliud扩展Eliud素性检脸

2置换密码

2.1算法原理

在置换密码的情形下,我们也可以认为P和C是26个英文字母。在移位密

码中使用Z%是由于加密和解密都是代数运算。但是在置换密码的情形下,可更简

朴的将加密和解密过程直接看作是一个字母表上的置换。

任取一置换万,便可得到一加密函数,见下表(小写字母表达明文,大写字母

表达密文):

abcdefghijk1m

XNYAHP0GzQWBT

n0PqrstuVwXyz

SFLRCVMuEKJDI

按照上表应有e.(a)=X,%S)=N,等等。解密函数是相应的逆置换。由下

表给出:

ABcDEFGHIJKLM

d1ryV0hEzXwpt

N0pQRsTuVWXYZ

bgfjqnmuskaci

因此,4(A)=d,4(8)=/,等等。

置换密码的一个密钥刚好相应于26个英文字母的一种置换。所有也许的置换

有26!种,这个数值超过4.0x1(产,是一个很大的数。因此,采用穷尽密钥搜索

的袭击方法,即使使用计算机,也是计算上不可行的。

2.2实现过程

2.2.1程序代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

usingSystem.Windows.Forms;

namespacemimaxue46.FormsClass

(

publicpartialclasszhihuan:Form

(

publiczhihuan()

InitializeComponent();

)

privatevoidbuttonl_Click(objectsender,EventArgse)

textBox2.Clear0;

string[]aa:二newstring[26];

aa[0]=aa[l]="b〃;aa[2]=〃c";aa[3]="d〃;aa[4]=〃e〃;

aa[5]=aa[6]="g";aa[7]="h";aa[8]="i";aa[9]="j";

aa[10]="k";aa[ll]="1";aa[12]=aa[13]="n";aa[14]="0

aa[15]二V;aa[16]=〃q〃;aa[17]="r〃;aa[18]=〃s〃;aa[19]二

aa[20]=〃u〃;aa[21]="v";aa[22]="w";aa[23]="x";aa[24]="y

aa[25]="z〃;

string[]bb=newstring[26];

bb[0]=〃X〃;bb[1];bb[2]=;bb[3]="A〃;bb[4]:;

bb[5];bb[6]="0〃;bb[7]=〃G〃;bb[8];bb[9]=V;

bb[10]="W";bb[ll]="B";bb[12]="T";bb[13]="S";bb[14]="F";

bb[151=1";bb[16]=*R*;bb[17]="C";bb[18]="V";bb[19]="M";

bb[20]=〃U〃;bb[21]="E";bb[22]="K";bb[23]="J";bb[24]="D";

bb[25]="I〃;〃设立密码加密表

stringtx=textBoxl.Text;

intle=tx.Length;

string[]txt=newstring[le];

for(intm=0;in<le;m++)

(

txt[m]=tx[m].ToStringO;

}〃明文

string[]txt2=newstring[le];

for(inti=0;i<le;i++)

for(intj=0;j<26;j++)

if(txt[i]=aa[j])

txt2[i]=bb[j];

}

)

}〃密文

stringtx2=

for(inti=0;i<txt2.Length;i++)

(

tx2+=txt2[i];

I

this.textBox2.Text=tx2;

}〃还可以使用list

privatevoidtextBoxl_TextChanged(objectsender,EventArgse)

|

)

privatevoidtextBox2_TextChanged(objectsender,EventArgse)

{

)

privatevoidbutton2_Click(objectsender,EventArgse)

string[]aa=newstring[26];

aa[0]="a";aa[l]=〃b〃;aa⑵="c";aa[3]="d";aa[4]="e";

aa[5]=〃/;aa[6]=〃g〃;aa[7]=〃h〃;aa[8]=〃i〃;aa[9]=〃j〃;

aa[10]=〃k〃;aa[U]=T;aa[12]=aa[13]="n";aa[14]=〃0〃;

aa[15]=〃p〃;aa[16]=〃q〃;aa[17]=〃r〃;aa[18]=〃s〃;aa[19]=〃t〃;

aa[20]="u";aa[21]="v";aa[22]="w";aa[23]="x〃;aa[24]="y〃;

aa[25]="z〃;

string[]bb=newstring[26];

bb[O]=:〃X〃;bb[l]="N〃;bb[2]=丫;bb[3]="A";bb[4]=〃H〃;

bb[5]二〃P〃;bb[6]=〃0”;bb[7]=〃G〃;bb[8]="Z";bb[9]=〃Q〃;

bb[10]=W;bb[ll]=〃B”;bb[12]='T';bb[13]="S";bb[14]="F〃;

bb[15]="〃;bb[16]=〃R〃;bb[17]=〃C〃;bb[18]=〃V〃;bb[19]=

bb[20]="IT;bb[21]="E";bb[22]="K";bb[23]=丁;bb[24]=〃D〃;

bb[25]=T;

stringtx=textBox3.Text;

intle=tx.Length;

string[]txt=newstringEle];

for(inti=0;i<le;i++)

{

txt[i]=tx[i].ToStringO;

}〃密文

string[]txt2=newstringtie];

for(intj=0;j<le;j++)

(

for(intm=0;m<26;m++)

(

if(txt[j]=bb[m])

(

txt2[j]=aa[m];

)

)

”/获得明文

stringtx2

for(intn=0;n<le;n++)

tx2+=txt2[n];

)

textBox4.Text=tx2;

)

}

2.2.2运营界面

3维吉尼亚密码

3.1算法原理

密码体制

设”是一个正整数。定义P=C=K=(Z26)'"。对任意的密钥K=4,%2,…,心),

定义:

6八%,*2,…,x,“)=(当+kt,x2+k2,---,x,„+匕“)

服(必,>2,…%)=(%-匕,%一七,…,为F)

I、I•诉右的;彳笛:却旦在77■出彳牛

使用前面所述的方法,相应——25,则每个密钥K相称于一个长度为

〃z的字母串,称为密钥字。维吉尼亚密码一次加密加个明文字母。

例假设加=6,密钥字为CIPHER,其相应于如下的数字串1<=(2,8,15,7,4,17)»要

加密的明文为:

thiscryptosystemisnotsecure

将明文串转化为相应的数字,每六个为一组,使用密钥字进行模26下的加密运算如下所示:

1978182172415191418241819

281574172815741728

211523256~8~023~821221520~1

412818131419184220174

157417281574172815

19191291522825819222519

则相应的密文应当为:VPXZGIAXIVWPUBTTMJPWIZITWZT

解密时,使用相同的密钥字,进行逆运算即可。

维吉尼亚密码的密钥空间大小为26"',所以即使加的值很小,使用穷尽密钥搜索方法也需要

很长的时间。例如,当加=5时,密钥空间大小超过1.1x107,这样的密钥量已经超过了使用手

算进行穷尽搜索的能力范围(当然使用计算机另当别论)。

3.2实现过程

3.2.1程序代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

usingSystem.Windows.Forms;

namespacemimaxue46.FormsClass

publicpartialclassweijiniya:Form

publicweijiniyaO

|

InitializeComponent();

)

privatevoidweijiniya_Load(objectsender,EventArgse)

privatevoidbuttonlClick(objectsender,hventArgse)

privatevoidbuttonlClick1(objectsender,EventArgse)

(

ttregion

textBox3.Clear();

string1]aa=newstring[26];

aa[0]="a";aa[l]=W;aa[2]=aa[3]=〃d";aa[4]=〃e〃;

aa[5]="f";aa[6]="g";aa[7]="h";aa[8]="i";aa[9]="j";

z

aa[10]="k";aa[ll]=T;aa[12]=V;aa[13]=〃n〃;aa[14]=

aa[15]=〃p";aa[16]二V;aa[17]="r〃;aa[18]=〃s〃;aa[19]二

aa[20]=〃u〃;aa[21]='V;aa[22]="w";aa[23]=〃x";aa[24]="y〃

aa[25]="z";

string[]bb=newstring[26];

bb[0]="A";bb[l]="B";bb[2]="C";bb[3]="D";bb[4]=

bb[5]="F";bb[6]="G〃;bb[7]="H";bb[8]=T;bb[9]=丁;

bb[10]="K";bb[ll]="L";bb[12]="M〃;bb[13]=〃N〃;bb[14]="0〃

bb[15]="P";bb[16]=V;bb[17]=〃R〃;bb[18]=飞〃;bb[19]=T

bb[20]="U";bb[21]=〃V〃;bb[22]=州〃;bb[23]=〃X〃;bb[24]=〃Y〃

bb[25]=Z〃;

ttendregion

try

^region秘钥

stringtx=textBoxl.Text;

intle=tx.Length;

string[]txt=newstring[le];

int[]txt2=newint[le];

for(inti=0;i<le;i++)

txt[i]=tx[i].ToStringO;

for(inti=0;i<le;i++)

for(intj=0;j<26;j++)

if(txt[i]==bb[j])

txt2[i]=j;

)

}

}

ftendregion

^region明文

stringtx2=textBox2.Text;

intle2=tx2.Length;

string[]txt3=newstring[le2];

int[]txt4=newint[le2];

for(inti=0;i<le2;i++)

txt3[i]=tx2[i].ToStringO;

for(inti=0;i<le2;i++)

{

for(intj=0;j<26;j++)

(

if(txt3[i]==aa[j])

{

txt4[i]=j;

)

)

}

Sendregion

^region加密

int[]txt5=newint[le2];

intm=le2/le;〃得到明文的整数组的个数

for(inti=0;i<(m+1);i++)

{

for(intj=0;j<le;j++)

(

if((j+i*le)<le2)

{

txt5[j+i*le]=(txt4[j+i*le]+txt2[j])%26;

}

)

}

#endregion

#region密文显示

stringf]txt6=newstring[le2];

for(inti=0;i<le2;i++)

txt6[i]=bb[txt5[i]];

stringtx7="〃;

for(inti=0;i<le2;i++)

{

tx7+=txt6[i];

)

textBox3.Text=tx7;

ftendregion

}

catch

(

MessageBox.Show(“请输入对的的秘钥及明文”);

)

}

privatevoidbutton2_Click(objectsender,EventArgse)

{

ttregion

textBox6.Clear();

string[]aa=newstring[26];

aa[0]=〃a〃;aa[l]二〃b〃;aa⑵=〃c〃;aa[3]=〃d〃;aa[4]=V;

aa[5]="f";aa[6]="g";aa[7]="h〃;aa[8]="i";aa[9]="j〃;

aa[10]="k";aa[ll]=aa[12]="m";aa[13]="n";aa[14]="o";

aa[15]="p";aa[16]="q";aa[17]="r";aa[18]="s";aa[19]="t";

aa[20]=〃u〃;aa[21]="v〃;aa[22]=aa[23]=〃x〃;aa[24]=〃y〃;

aa[25]=〃z〃;

stringE]bb=newstring[26];

bb[O]=〃A〃;bb[l]=〃B〃;bb[2]=〃C”;bb[3]="D";bb[4]="E";

bb[5]=〃F";bb[6]="G〃;bb[7]=〃H”;bb[8]="I;bb[9]=〃r;

bb[10]="K〃;bb[ll]="L";bb[12]="M〃;bb[13]〃N〃;bb[14]=

bb[15]=〃P〃;bb[16]=V;bb[17]=〃R〃;bb[18]〃s〃;bb[i9]=

bb[20]=〃U";bb[21]=〃V〃;bb[22]=〃W〃;bb[23]"X〃;bb[24]="Y";

bb[25]=〃Z〃;

ttendregion

try

^region秘钥

stringtx=textBox4.Text;

intle=tx.Length;

string[]txt=newstring[le];

int[]txt2=newint[le];

for(inti=0;i<le;i++)

{

txt[i]=tx[i].ToStringO;

}

for(inti=0;i<le;i++)

{

for(intj=0;j<26;j++)

(

if(txt[i]==bb[j])

(

txt2[i]=j;

)

}

}

ftendregion

^region密文

stringtx2=textBox5.Text;

intle2=tx2.Length;

stringf]txt3=newstring[le2];

int[]txt4=newint[le2];

for(inti=0;i<le2;i++)

{

txt3[i]=tx2[i].ToStringO;

)

for(inti=0;i<le2;i++)

{

for(intj=0;j<26;j++)

(

if(txt3[i]=bb[j])

{

txt4[i]=j;

}

)

}

#endregion

^region解密

int[]txt5=newint[le2];

intm=le2/le;〃得到密文的整数组的个数

for(inti=0;i<(m+1);i++)

{

for(intj=0;j<le;j++)

(

if((j+i*le)<le2)

{

intn=(txt4[j+i*le]-txt2[j])%26;

if(n<0)

txt5[j+i*le]=(n+26)%26;

)

else

(

txt5[j+i*le]=n%26;

)

)

}

)

#endregion

^region明文显示

string[]txt6=newstring[le2];

for(inti=0;i<le2;i++)

{

txt6[i]=aa[txt5[i]];

)

stringtx7=””;

for(inti=0;i<le2;i++)

(

tx7+=txt6[i];

)

textBox6.Text=tx7;

#endregion

}

catch

(

McssageBox.Show(“请输入对的格式的秘钥及密文”);

)

)

3.2.1运营界面

Forml

4Eulid算法

4.1算法原理

设〃为正整数,b、q、r是三个整数,假如整数q满足人=aq+r,则gcd(b,a)=gcd(a,r)

设务=a,1•]=/,aib>0反复运用gcd(b,a)=gcd(a,r),可以得到

£=公+M+i+%,°<彳+2<彳+1直到,5+|=0则gcd(a,b)等于最大的非零余

数勺

例如gcd(25,15)=gcd(15,10)=gcd(10,5)=gcd(5,0)=5

4.2实现过程

4.2.1程序代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

usingSystem.Windows.Forms;

namespacemimaxue46.FormsClass

(

publicpartialclassFtliud:Form

(

publicEliud()

(

InitializeComponent();

}

privatevoidtextBoxl_TextChanged(objectsender,EventArgse)

{

}

privatevoideulid(TextBoxtextboxl,TextBoxtextbox2)

{

inta,b,r;

r=1;

try

(

a=Convert.ToIntl6(textBoxl.Text);

b=Convert.ToTntl6(textBox2.Text);

while(r!=0)

{

r=a%b;

a=b;

b=r;

textBox3.Text=Convert.ToString(a);

}

catch

(

MessageBox.Show("请对的输入数字”);

}

}

privatevoidbuttonlClick(objectsender,EventArgse)

(

//r=a/b;这是求解整数商部分

eulid(textBoxl,textBox2);

}

)

}

4.2.2运营界面

Form

5Eulid扩展算法

5.1算法原理

假如整数”和万不都为0,那么存在整数尤和y满足ar+by=gcd(4b)

假如gcd(a,b)=l,则人在模。下有乘法逆元,即存在一个x满足bx=1(moda)用扩展欧几

里得算法先求出gcd(a,b),当gcd(a,b)=l时,则返回的y值就是b的乘法逆元。

5.2实现过程

5.2.1程序代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

usingSystem.Windows.Forms;

namespacemimaxue46.FormsClass

{

publicpartialclassExtendEliud:Form

(

publicExtendEliud()

(

InitializeComponent();

)

privatevoidbuttonl_Click(objectsender,EventArgse)

(

try

(

inta=Convert.Tolnt32(textBoxl.Text);

intb=Convert..ToInt32(textBox2.Text);

intx=1;

inty=0;

ints=1;

intr=0;

intg=a;

intt=b;

intq,u,v,w;

if(a>=b&&b>0)

while(t>0)

q=g/t;

u=x-q*r;v=y-q*s;w=g-q*t;

x二r;y二s;g=t;

r=u;s=v;t=w;

}

textBox3.Text=Convert.ToString(g);

textBox4.Text=Convert.ToString(x);

textBox5.Text=Convert.ToString(y);

}

else

{

MessageBox.Show("请保证a>=b>0");

)

)

catch

(

MessageBox.Show(”请输入对的格式的数字”);

}

)

}

5.2.2运营界面

Forml

ExtendEliud

求解逆元

6素性检查

6.1算法原理

素数的定义,当一个数只能被1和自身整除时,这个数是素数。

古希腊数学家Eratosthenes(公元前276~公元前195)发现了一种找出不超过一个给定正整数的所有素

数的方法,称为Eratosthenes筛法(SieveofEratosthenes)。所谓筛法就是将不合条件的整数筛

掉,而将符合条件的整数“捉住”。Eratosthenes筛法筛选由大于1并且小于或等于n的所有自然

数组成的数列。

一方面取第一个素数2,划去所有除2以外的2的倍数。在余下的正整数中,大于刚刚取到的素数

2的第一个正整数,即正整数3被认定为素数,其倍数(不涉及自身)同样从数列中划去。这一过程

连续到找到一个大于nn的素数为止

6.2实现过程

6.2.1程序代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

usingSystem.Windows.Forms;

namespacemimaxue46.FormsClass

{

publicpartialclassSuxingjianYan:Form

(

publicSuxingjianYan()

|

InitializeComponent();

}

privatevoideulid(intn,inta)

{

intr;

r=1;

a=n/2;

while(r!=0)

(

r=n%a;

n=a;

a=r;

)

privatevoidbutton1Click(objectsender,EventArgse)

iiregion

inta=Convert.ToInt32(textBoxl.Text);

if(a=1||a=2)

(

label2.Text="是素数";

)

for(inti=2;i<a;i++)

(

if(a%i=0)

{

label2.Text="不是素数";

break;

)

else

{

labe12.Text="是素数";

}

)

#endregion

)

}

6.2.2运营界面

Forml

置换空西移位至码维吉尼亚密码扩展Eliud素性检验DES

口一Suxingjian...|Q|[B||S3|

检琥是否为素数

检始数

检蛤

结果

Forml

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论