信息安全与密码学上机报告.docx

上传人:b****1 文档编号:13542570 上传时间:2023-06-15 格式:DOCX 页数:22 大小:136.74KB
下载 相关 举报
信息安全与密码学上机报告.docx_第1页
第1页 / 共22页
信息安全与密码学上机报告.docx_第2页
第2页 / 共22页
信息安全与密码学上机报告.docx_第3页
第3页 / 共22页
信息安全与密码学上机报告.docx_第4页
第4页 / 共22页
信息安全与密码学上机报告.docx_第5页
第5页 / 共22页
信息安全与密码学上机报告.docx_第6页
第6页 / 共22页
信息安全与密码学上机报告.docx_第7页
第7页 / 共22页
信息安全与密码学上机报告.docx_第8页
第8页 / 共22页
信息安全与密码学上机报告.docx_第9页
第9页 / 共22页
信息安全与密码学上机报告.docx_第10页
第10页 / 共22页
信息安全与密码学上机报告.docx_第11页
第11页 / 共22页
信息安全与密码学上机报告.docx_第12页
第12页 / 共22页
信息安全与密码学上机报告.docx_第13页
第13页 / 共22页
信息安全与密码学上机报告.docx_第14页
第14页 / 共22页
信息安全与密码学上机报告.docx_第15页
第15页 / 共22页
信息安全与密码学上机报告.docx_第16页
第16页 / 共22页
信息安全与密码学上机报告.docx_第17页
第17页 / 共22页
信息安全与密码学上机报告.docx_第18页
第18页 / 共22页
信息安全与密码学上机报告.docx_第19页
第19页 / 共22页
信息安全与密码学上机报告.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

信息安全与密码学上机报告.docx

《信息安全与密码学上机报告.docx》由会员分享,可在线阅读,更多相关《信息安全与密码学上机报告.docx(22页珍藏版)》请在冰点文库上搜索。

信息安全与密码学上机报告.docx

信息安全与密码学上机报告

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

 

姓名:

学号:

学院:

班级:

成绩:

 

2014年12月31日

目  录

1移位密码

1.1算法原理

密码体制

,任意

,定义

以及

若取

,则此密码体制通常叫做凯撒密码(CaesarCipher),因为它首先为儒勒·凯撒所使用。

使用移位密码可以用来加密普通的英文句子,但是首先必须建立英文字母和模26剩余之间的一一对应关系:

将其列表如下:

A

B

C

D

E

F

G

H

I

J

K

L

M

0

1

2

3

4

5

6

7

8

9

10

11

12

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

13

14

15

16

17

18

19

20

21

22

23

24

25

1.2实现过程

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();

}

privatevoidtextBox1_KeyPress(objectsender,KeyPressEventArgse)

{

}

privatevoidbutton1_Click(objectsender,EventArgse)

{

textBox3.Clear();

string[]aa=newstring[26];

aa[0]="a";aa[1]="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[11]="l";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]="w";aa[23]="x";aa[24]="y";

aa[25]="z";

string[]aa2=newstring[26];

aa2[0]="A";aa2[1]="B";aa2[2]="C";aa2[3]="D";aa2[4]="E";

aa2[5]="F";aa2[6]="G";aa2[7]="H";aa2[8]="I";aa2[9]="J";

aa2[10]="K";aa2[11]="L";aa2[12]="M";aa2[13]="N";aa2[14]="O";

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]="Y";

aa2[25]="Z";

try

{

#region

inta=Convert.ToInt16(textBox1.Text);

stringtx=textBox2.Text;

intle=tx.Length;

int[]bb=newint[le];

string[]txt=newstring[le];

for(inti=0;i

{

txt[i]=tx[i].ToString();

}//获得明文

string[]txt2=newstring[le];

for(intj=0;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

{

tx2+=txt2[n];

}

textBox3.Text=tx2;

#endregion

}

catch

{

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

}

}

privatevoidbutton2_Click(objectsender,EventArgse)

{

textBox6.Clear();

string[]aa=newstring[26];

aa[0]="a";aa[1]="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[11]="l";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]="w";aa[23]="x";aa[24]="y";

aa[25]="z";

string[]aa2=newstring[26];

aa2[0]="A";aa2[1]="B";aa2[2]="C";aa2[3]="D";aa2[4]="E";

aa2[5]="F";aa2[6]="G";aa2[7]="H";aa2[8]="I";aa2[9]="J";

aa2[10]="K";aa2[11]="L";aa2[12]="M";aa2[13]="N";aa2[14]="O";

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]="Y";

aa2[25]="Z";

try

{

inta=Convert.ToInt16(textBox4.Text);

stringtx=textBox5.Text;

intle=tx.Length;

string[]txt=newstring[le];

for(inti=0;i

{

txt[i]=tx[i].ToString();

}//获得密文

string[]txt2=newstring[le];

for(intj=0;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

{

tx2+=txt2[n];

}

textBox6.Text=tx2;

}

catch

{

MessageBox.Show("请输入正确的秘钥以及密文");

}

}

}

}

1.2.2运行界面

2置换密码

2.1算法原理

在置换密码的情形下,我们也可以认为

是26个英文字母。

在移位密码中使用

是因为加密和解密都是代数运算。

但是在置换密码的情形下,可更简单的将加密和解密过程直接看作是一个字母表上的置换。

任取一置换

,便可得到一加密函数,见下表(小写字母表示明文,大写字母表示密文):

a

b

c

d

e

f

g

h

i

j

k

l

m

X

N

Y

A

H

P

O

G

Z

Q

W

B

T

n

o

p

q

r

s

t

u

v

w

x

y

z

S

F

L

R

C

V

M

U

E

K

J

D

I

按照上表应有

,等等。

解密函数是相应的逆置换。

由下表给出:

A

B

C

D

E

F

G

H

I

J

K

L

M

d

l

r

y

v

o

h

E

z

x

w

p

t

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

b

g

f

j

q

n

m

U

s

k

a

c

i

因此,

,等等。

置换密码的一个密钥刚好对应于26个英文字母的一种置换。

所有可能的置换有26!

种,这个数值超过

,是一个很大的数。

因此,采用穷尽密钥搜索的攻击方法,即使使用计算机,也是计算上不可行的。

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();

}

privatevoidbutton1_Click(objectsender,EventArgse)

{

textBox2.Clear();

string[]aa=newstring[26];

aa[0]="a";aa[1]="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[11]="l";aa[12]="m";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[0]="X";bb[1]="N";bb[2]="Y";bb[3]="A";bb[4]="H";

bb[5]="P";bb[6]="O";bb[7]="G";bb[8]="Z";bb[9]="Q";

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

bb[15]="L";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=textBox1.Text;

intle=tx.Length;

string[]txt=newstring[le];

for(intm=0;m

{

txt[m]=tx[m].ToString();

}//明文

string[]txt2=newstring[le];

for(inti=0;i

{

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

{

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

{

txt2[i]=bb[j];

}

}

}//密文

stringtx2="";

for(inti=0;i

{

tx2+=txt2[i];

}

this.textBox2.Text=tx2;

}//还可以使用list

privatevoidtextBox1_TextChanged(objectsender,EventArgse)

{

}

privatevoidtextBox2_TextChanged(objectsender,EventArgse)

{

}

privatevoidbutton2_Click(objectsender,EventArgse)

{

string[]aa=newstring[26];

aa[0]="a";aa[1]="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[11]="l";aa[12]="m";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[0]="X";bb[1]="N";bb[2]="Y";bb[3]="A";bb[4]="H";

bb[5]="P";bb[6]="O";bb[7]="G";bb[8]="Z";bb[9]="Q";

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

bb[15]="L";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=textBox3.Text;

intle=tx.Length;

string[]txt=newstring[le];

for(inti=0;i

{

txt[i]=tx[i].ToString();

}//密文

string[]txt2=newstring[le];

for(intj=0;j

{

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

{

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

{

txt2[j]=aa[m];

}

}

}//获得明文

stringtx2="";

for(intn=0;n

{

tx2+=txt2[n];

}

textBox4.Text=tx2;

 

}

}

}

2.2.2运行界面

3维吉尼亚密码

3.1算法原理

密码体制

是一个正整数。

定义

对任意的密钥

定义:

以上所有的运算都是在

上进行。

使用前面所述的方法,对应

,则每个密钥

相当于一个长度为

的字母串,称为密钥字。

维吉尼亚密码一次加密

个明文字母。

例假设

,密钥字为CIPHER,其对应于如下的数字串K=(2,8,15,7,4,17)。

要加密的明文为:

thiscryptosystemisnotsecure

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

1978182172415191418241819

281574172815741728

21152325680238212215201

412818131419184220174

157417281574172815

19191291522825819222519

则相应的密文应该为:

VPXZGIAXIVWPUBTTMJPWIZITWZT

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

维吉尼亚密码的密钥空间大小为

,所以即使

的值很小,使用穷尽密钥搜索方法也需要很长的时间。

例如,当

时,密钥空间大小超过

,这样的密钥量已经超出了使用手算进行穷尽搜索的能力范围(当然使用计算机另当别论)。

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

{

publicweijiniya()

{

InitializeComponent();

}

privatevoidweijiniya_Load(objectsender,EventArgse)

{

}

privatevoidbutton1_Click(objectsender,EventArgse)

{

}

privatevoidbutton1_Click_1(objectsender,EventArgse)

{

#region

textBox3.Clear();

string[]aa=newstring[26];

aa[0]="a";aa[1]="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[11]="l";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]="w";aa[23]="x";aa[24]="y";

aa[25]="z";

string[]bb=newstring[26];

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

bb[5]="F";bb[6]="G";bb[7]="H";bb[8]="I";bb[9]="J";

bb[10]="K";bb[11]="L";bb[12]="M";bb[13]="N";bb[14]="O";

bb[15]="P";bb[16]="Q";bb[17]="R";bb[18]="S";bb[19]="T";

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

bb[25]="Z";

#endregion

try

{

#region秘钥

stringtx=textBox1.Text;

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

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2