成 都 信 息 工 程 学 院
课 程 设 计 报 告
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. 背景............................................................................................................................................1
2.系统设计.........................................................................................................................................1
2.1 系统主要目标......................................................................................................................1
2.2 主要软件需求(运行环境)..............................................................................................2
2.3 功能模块与系统结构..........................................................................................................2
3 系统功能程序设计........................................................................................................................4
3.1 基本要求部分......................................................................................................................4
3.1.1 字节替换..................................................................................................................4
3.1.2 行移位.......................................................................................................................5
3.1.3 列混合.......................................................................................................................6
3.1.4 密钥加.......................................................................................................................6
3.1.5 密钥扩展...................................................................................................................7
3.1.6 字节替换...................................................................................................................8
3.1.7 行移位.......................................................................................................................9
3.1.8 列混合.......................................................................................................................9
3.1.9 加密........................................................................................................................10
3.1.10 解密......................................................................................................................11
4. 测试报告.....................................................................................................................................12
5.结论............................................................................................................................................21
参考文献..........................................................................................................................................21
第 1 页 共 21 页
1. 背景
AES,密码学中的高级加密标准(Advanced Encryption Standard,AES),又称 Rijnda
el 加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的 DES,
已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国
家标准与技术研究院 (NIST)于 2001 年 11 月 26 日发布于 FIPS PUB 197,并在
2002 年 5 月 26 日成为有效的标准。2006 年,高级加密标准已然成为对称密钥加密
中最流行的算法之一。AES 有一个固定的 128 位的块大小和 128,192 或 256 位大
小的密钥大小。
该算法为比利时密码学家 Joan Daemen 和 Vincent Rijmen 所设计,结合两位作
者的名字,以 Rijndael 之命名之,投稿高级加密标准的甄选流程。(Rijdael 的发音
近于 "Rhine doll"。)AES 在软体及硬件上都能快速地加解密,相对来说较易于实作,且只
需要很少的记忆体。作为一个新的加密标准,目前正被部署应用到更广大的范围.
2.系统设计
2.1 系统主要目标
基本要求部分:
1.在深入理解 AES 加密/解密算法理论的基础上,设计一个 AES 加密/解密软件系统;
2.完成一个明文分组的加解密,明文和密钥是十六进制,长度都为 64 比特(16 个 16 进制
数),输入明文和密钥,输出密文,进行加密后,能够进行正确的解密;
3. 程序运行时,要求输出每一轮使用的密钥,以及每一轮加密或解密之后的 16 进制表示的
值;
4. 要求提供所设计系统的报告及完整的软件。
较高要求部分:
1.如果明文不止一个分组,程序能完成分组,然后加密;最后一个分组长度不足时要求完成
填充;密钥长度不足时能进行填充,过长则自动截取前面部分。
2.密钥采用 ASCII 码,明文要求输入信息可以是文字(可以是汉字或英文,信息量要求不止
一个加密分组长度),任意字符,或者是文本文档,或者普通文件。进行加密后,能够进行
正确的解密;
3.程序代码有比较好的结构,模块划分合理,如用类进行封装,通过调用类的成员函数实现
加密解密功能,函数的参数及返回值设置合理等;
第 2 页 共 21 页
4.界面友好,程序实现有新意。
2.2 主要软件需求(运行环境)
本软件适用 VC 语言编写,编译成功后的 EXE 文件可以在装有 windows 系统的任何计算
机上使用。
测试平台:Windows XP Professional
使用软件:Visual C++ 6.0
2.3 功能模块与系统结构
主要功能模块如下:
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
2. 行移位 ShiftRow
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
(S盒)
1.取逆
2.仿射变换