密码学课程设计AES加密解密文档.docx

上传人:b****1 文档编号:1786686 上传时间:2023-05-01 格式:DOCX 页数:21 大小:216.68KB
下载 相关 举报
密码学课程设计AES加密解密文档.docx_第1页
第1页 / 共21页
密码学课程设计AES加密解密文档.docx_第2页
第2页 / 共21页
密码学课程设计AES加密解密文档.docx_第3页
第3页 / 共21页
密码学课程设计AES加密解密文档.docx_第4页
第4页 / 共21页
密码学课程设计AES加密解密文档.docx_第5页
第5页 / 共21页
密码学课程设计AES加密解密文档.docx_第6页
第6页 / 共21页
密码学课程设计AES加密解密文档.docx_第7页
第7页 / 共21页
密码学课程设计AES加密解密文档.docx_第8页
第8页 / 共21页
密码学课程设计AES加密解密文档.docx_第9页
第9页 / 共21页
密码学课程设计AES加密解密文档.docx_第10页
第10页 / 共21页
密码学课程设计AES加密解密文档.docx_第11页
第11页 / 共21页
密码学课程设计AES加密解密文档.docx_第12页
第12页 / 共21页
密码学课程设计AES加密解密文档.docx_第13页
第13页 / 共21页
密码学课程设计AES加密解密文档.docx_第14页
第14页 / 共21页
密码学课程设计AES加密解密文档.docx_第15页
第15页 / 共21页
密码学课程设计AES加密解密文档.docx_第16页
第16页 / 共21页
密码学课程设计AES加密解密文档.docx_第17页
第17页 / 共21页
密码学课程设计AES加密解密文档.docx_第18页
第18页 / 共21页
密码学课程设计AES加密解密文档.docx_第19页
第19页 / 共21页
密码学课程设计AES加密解密文档.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

密码学课程设计AES加密解密文档.docx

《密码学课程设计AES加密解密文档.docx》由会员分享,可在线阅读,更多相关《密码学课程设计AES加密解密文档.docx(21页珍藏版)》请在冰点文库上搜索。

密码学课程设计AES加密解密文档.docx

密码学课程设计AES加密解密文档

工程学院

课程设计报告

 

AES加密解密的实现

 

课程名称:

应用密码算法程序设计

学生姓名:

学生学号:

专业班级:

任课教师:

 

年月日

附件:

课程设计成绩评价表

指导老师评阅成绩表

学习与工作态度(30%)

选题意义(10%)

文献综述(10%)

研究水平与设计能力(20%)

课程设计说明说(论文)撰写质量(20%)

设计创新(10%)

总分

指导老师签名:

年月日

课程设计答辩记录及评价表

学生

讲述情况

教师主要

提问记录

学生回答

问题情况

答辩评分

评分项目

分值

评价参考标准

评分

总分

及格

选题意义

10

9

8

7

6

4

文献综述

10

9

8

7

6

4

研究水平与设计能力

20

19

17

15

13

10

课程设计说明书(论文)撰写质量

20

19

17

15

13

10

设计创新

10

9

8

7

6

4

答辩效果

30

28

25

22

19

15

答辩小组成员签名

答辩小组组长签名:

年月日

课程设计成绩评定表

成绩汇总

评分项目

评分

比例

分数

课程设计总分

指导老师评分

50%

答辩小组评分

50%

1.背景

AES,密码学中的高级加密标准(AdvancedEncryptionStandard,AES),又称Rijndael加密法,是美国联邦政府采纳的一种区块加密标准。

那个标准用来替代原先的DES,已经被多方分析且广为全世界所利用。

通过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPSPUB197,并在2002年5月26日成为有效的标准。

2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

AES有一个固定的128位的块大小和128,192或256位大小的密钥大小。

该算法为比利时密码学家JoanDaemen和VincentRijmen所设计,结合两位作者的名字,以Rijndael之命名之,投稿高级加密标准的甄选流程。

(Rijdael的发音近于"Rhinedoll"。

)AES在软体及硬件上都能快速地加解密,相对来讲较易于实作,且只需要很少的经历体。

作为一个新的加密标准,目前正被部署应用到更广大的范围.

系统要紧目标

大体要求部份:

1.在深切明白得AES加密/解密算法理论的基础上,设计一个AES加密/解密软件系统;

2.完成一个明文分组的加解密,明文和密钥是十六进制,长度都为64比特(16个16进制数),输入明文和密钥,输出密文,进行加密后,能够进行正确的解密;

3.程序运行时,要求输出每一轮利用的密钥,和每一轮加密或解密以后的16进制表示的值;

4.要求提供所设计系统的报告及完整的软件。

较高要求部份:

1.若是明文不止一个分组,程序能完成份组,然后加密;最后一个分组长度不足时要求完成填充;密钥长度不足时能进行填充,太长那么自动截取前脸部份。

2.密钥采纳ASCII码,明文要求输入信息能够是文字(能够是汉字或英文,信息量要求不止一个加密分组长度),任意字符,或是文本文档,或一般文件。

进行加密后,能够进行正确的解密;

3.程序代码有比较好的结构,模块划分合理,如用类进行封装,通过挪用类的成员函数实现加密解密功能,函数的参数及返回值设置合理等;

4.界面友好,程序实现有新意。

要紧软件需求(运行环境)

本软件适用VC语言编写,编译成功后的EXE文件能够在装有windows系统的任何运算机上利用。

测试平台:

WindowsXPProfessional

利用软件:

VisualC++

功能模块与系统结构

要紧功能模块如下:

1.字节替换SubByte

A0,0

A0,1

A0,2

A0,3

A1,0

A1,1

A1,2

A1,3

A2,0

A2,1

A2,2

A2,3

A3,0

A3,1

A3,2

A3,3

B0,0

B0,1

B0,2

B0,3

B1,0

B1,1

B1,2

B1,3

B2,0

B2,1

B2,2

B2,3

B3,0

B3,1

B3,2

B3,3

 

2.行移位ShiftRow

 

 

通过逆S盒的映射变换取得

 

与加密时的行移位区别在于移位方向相反。

加密与解密系统流程图如下所示,

3系统功能程序设计

大体要求部份

字节替换

SubBytes()变换是一个基于S盒的非线性置换,它用于将输入或中间态的每一个字节通过一个简单的查表操作,将其映射为另一个字节。

映射方式是把输入字节的高四位作为S盒的行值,低四位作为列值,然后掏出S盒中对应的行和列的元素作为输出。

unsignedcharsubbytes(unsignedcharstate[4][4])

{printf("aftersubbyte:

\n");addroundkey(state,w);

for(round=2;round<11;round++)

{printf("第%d轮加密:

\n",round);

subbytes(state);

shiftrows(state);

mixcolumns(state);

keyexpand(w,round);

addroundkey(state,w);

}

subbytes(state);测试报告

为查验程序的正确性,需要将结果与标准相对照。

参照教师课件里的AES运行程序的运行结果,与我的运行结果对照如下:

下面是我的运行界面:

上面的是标准,接着的是我的运行测试,下面的是我从终端中复制的进程:

密钥扩展Roundkey:

efa8b6db

4452710b

a55b25ad

417f3b00

addroundkey5:

e0c8d985

9263b1b8

7f6335be

e8c05001

第6轮加密:

aftersubbyte:

e1e83597

4ffbc86c

d2fb96ae

9bba537c

aftershiftrows:

e1e83597

fbc86c4f

96aed2fb

7c9bba53

aftermixcolumns:

25bdb64c

d1113a4c

a9d133c0

ad688eb0

afterkeyexpand:

rotword():

0bad00db

subword():

2b9563b9

after^Rcon():

3b9563b9

w[20]:

d4d1c6f8

w[21]:

7c839d87

w[22]:

caf2b8bc

w[23]:

11f915bc

密钥扩展Roundkey:

d47cca11

d183f2f9

c69db815

f887bcbc

addroundkey6:

f1c17c5d

0092c8b5

6f4c8bd5

55ef320c

第7轮加密:

aftersubbyte:

a178104c

634fe8d5

a8293d03

fcdf23fe

aftershiftrows:

a178104c

4fe8d563

3d03a829

fefcdf23

aftermixcolumns:

4b2c3337

864a9dd2

8d89f418

6d80e8d8

afterkeyexpand:

rotword():

f915bc11

subword():

99596582

after^Rcon():

b9596582

w[24]:

6d88a37a

w[25]:

110b3efd

w[26]:

dbf98641

w[27]:

ca0093fd

密钥扩展Roundkey:

6d11dbca

880bf900

a33e8693

7afd41fd

addroundkey7:

263de8fd

0e4164d2

2eb7728b

177da925

第8轮加密:

aftersubbyte:

f7279b54

ab8343b5

31a9403d

f0ffd33f

aftershiftrows:

f7279b54

8343b5ab

403d31a9

3ff0ffd3

aftermixcolumns:

14462734

1516462a

b51556d8

bfecd743

afterkeyexpand:

rotword():

0093fdca

subword():

63dc5474

after^Rcon():

23dc5474

w[28]:

4e54f70e

w[29]:

5f5fc9f3

w[30]:

84a64fb2

w[31]:

4ea6dc4f

密钥扩展Roundkey:

4e5f844e

545fa6a6

f7c94fdc

0ef3b24f

addroundkey8:

5a19a37a

4149e08c

42dc1904

b11f650c

第9轮加密:

aftersubbyte:

bed40ada

833be164

2c86d4f2

c8c04dfe

aftershiftrows:

bed40ada

3be16483

d4f22c86

fec8c04d

aftermixcolumns:

00b154fa

51c8761b

2f896d99

d1ffcdea

afterkeyexpand:

rotword():

a6dc4f4e

subword():

2486842f

after^Rcon():

a486842f

w[32]:

ead27321

w[33]:

b58dbad2

w[34]:

312bf560

w[35]:

7f8d292f

密钥扩展Roundkey:

eab5317f

d28d2b8d

73baf529

21d2602f

addroundkey9:

ea046585

83455d96

5c3398b0

f02dadc5

第10轮加密:

aftersubbyte:

87f24d97

ec6e4c90

4ac346e7

8cd895a6

aftershiftrows:

87f24d97

6e4c90ec

46e74ac3

a68cd895

aftermixcolumns:

4740a34c

37d4709f

94e43a42

eda5a6bc

afterkeyexpand:

rotword():

8d292f7f

subword():

5da515d2

after^Rcon():

46a515d2

w[36]:

ac7766f3

w[37]:

19fadc21

w[38]:

28d12941

w[39]:

575c006e

密钥扩展Roundkey:

ac192857

77fad15c

66dc2900

f321416e

addroundkey10:

eb598b1b

402ea1c3

f2381342

1e84e7d2

aftersubbyte:

e9cb3daf

0931322e

89077d2c

725f94b5

aftershiftrows:

e9cb3daf

31322e09

7d2c8907

b5725f94

afterkeyexpand:

rotword():

5c006e57

subword():

4a639f5b

after^Rcon():

7c639f5b

w[40]:

d014f9a8

w[41]:

c9ee2589

w[42]:

e13f0cc8

w[43]:

b6630ca6

密钥扩展Roundkey:

d0c9e1b6

14ee3f63

f9250c0c

a889c8a6

输出明文加密后的密文:

3902dc19

25dc116a

8409850b

1dfb9732

—————————WelcometoAESencryptanddecrypt—————————

————————————————————————————————————

FirstYoushouldmakeachoice!

—————AES_encrypt加密—————

A:

自动查验AES加密实现进程!

B:

用户输入明文,实现AES加密!

—————AES_decrypt解密—————

C:

自动查验AES解密实现进程!

D:

用户输入密文,实现AES解密!

It'sover!

Pleaseinputagain:

请选择:

当输入的明文和密钥位数有误是,会产生错误报告:

—————————WelcometoAESencryptanddecrypt—————————

————————————————————————————————————

FirstYoushouldmakeachoice!

—————AES_encrypt加密—————

A:

自动查验AES加密实现进程!

B:

用户输入明文,实现AES加密!

—————AES_decrypt解密—————

C:

自动查验AES解密实现进程!

D:

用户输入密文,实现AES解密!

请选择:

p

Sorry,thereisn'tthechoice!

Pleaseinputagain:

请选择:

5.结论

本程序是处置的AES分组大小和密钥长度都为128位,迭代轮数为10轮。

由于我能力有限,程序还有很多不足的地方,比如不能自动填充缺失位等,只能说是完成了AES的大体功能,我也希望能将它的功能变得更壮大,但多次修改后均没有成功。

通过量次调试,对SubBytes,ShiftRows,MixColumns,AddRoundKey等加密进程,InvMixColumns,InvShiftRows,InvSubBytes等解密进程的编程运行进程有了清楚的熟悉,深切明白得了AES的加密和解密进程,对算法、密码保密性和平安性有了新的熟悉,收成很多。

参考文献

[1]谭浩强 C程序设计(第二版)清华大学出版社 1999

[2]张海藩 软件工程导论和(第四版)清华大学出版社 2003

[3] 杨波  现代密码学 清华大学出版社 2003

[4]张福泰密码学教程(第一版)武汉大学出版社2006

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

当前位置:首页 > 农林牧渔 > 林学

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

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