成 都 信 息 工 程 学 院课 程 设 计 报 告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. 背景 ............................................................................................................................................12.系统设计 .........................................................................................................................................12.1 系统主要目标 ......................................................................................................................12.2 主要软件需求(运行环境) ..............................................................................................22.3 功能模块与系统结构 ..........................................................................................................23 系统功能程序设计 ........................................................................................................................43.1 基本要求部分 ......................................................................................................................43.1.1 字节替换 ..................................................................................................................43.1.2 行移位 .......................................................................................................................53.1.3 列混合 .......................................................................................................................63.1.4 密钥加 .......................................................................................................................63.1.5 密钥扩展 ...................................................................................................................73.1.6 字节替换 ...................................................................................................................83.1.7 行移位 .......................................................................................................................93.1.8 列 混合 .......................................................................................................................93.1.9 加密 ........................................................................................................................103.1.10 解密 ......................................................................................................................114. 测试报告 .....................................................................................................................................125.结论 ............................................................................................................................................21参考文献 ..........................................................................................................................................21第 1 页 共 21 页1. 背景AES, 密 码 学 中 的 高 级 加 密 标 准 ( Advanced Encryption Standard, AES) , 又 称 Rijndael 加 密 法 , 是 美 国 联 邦 政 府 采 用 的 一 种 区 块 加 密 标 准 。
这 个 标 准 用 来 替 代 原 先 的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.02.3 功能模块与系统结构主要功能模块如下:1. 字节替换 SubByteA0,0 A0,1 A0,2 A0,3A1,0 A1,1 A1,2 A1,3A2,0 A2,1 A2,2 A2,3A3,0 A3,1 A3,2 A3,32. 行移位 ShiftRowB0,0 B0,1 B0,2 B0,3B1,0 B1,1 B1,2 B1,3B2,0 B2,1 B2,2 B2,3B3,0 B3,1 B3,2 B3,3(S盒)1.取逆2.仿射变换第 3 页 共 21 页3.列混合 MixColumn4.轮密钥加 AddRoundKey5.逆字节替换通过逆 S 盒的映射变换得到6.逆行移位 InvShiftRow与加密时的行移位区别在于移位方向相反7.逆列混淆加密与解密系统流程图如下所示,第 4 页 共 21 页3 系统功能程序设计 3.1 基本要求部分3.1.1 字节替换SubBytes。