AES加密解密的实现 联系客服

发布时间 : 星期五 文章AES加密解密的实现更新完毕开始阅读2967f033ee06eff9aef807a0

附件:课程设计成绩评价表

指导老师评阅成绩表 学习与工作态度(30%) 选题意义(10%) 文献综研究水平与设课程设计说明书(论设计创新(10%) 总分 述(10%) 计能力(20%) 文)撰写质量(20%) 指导老师签名: 年 月 日 课程设计答辩记录及评价表 学生 讲述情况 教师主要 提问记录 学生回答 问题情况 评分项目 选题意义 答辩评分 文献综述 研究水平与设计能力 课程设计说明书(论文)撰写质量 设计创新 答辩效果 分值 10 10 20 20 10 30 优 9 9 19 19 9 28 评价参考标准 良 中 及格 8 8 17 17 8 25 7 7 15 15 7 22 6 6 13 13 6 19 差 4 4 10 10 4 15 评分 总分 答辩小组成员签名 答辩小组组长签名: 年 月 日 课程设计成绩评定表 评分项目 成绩汇总 指导老师评分 答辩小组评分 评分 比例 50% 50% 分数 课程设计总分

目 录

1. 背景与意义 ................................................................ 1 2. 系统设计 .................................................................. 1

2.1系统主要目标 ..................................................... 1 2.2主要软件需求(运行环境) ......................................... 2 2.3功能模块与系统结构 ............................................... 2

3. 系统功能程序设计 .......................................................... 5

3.1基本要求部分 ..................................................... 5

3.1.1字节替换 ................................................... 5 3.1.2行移位 ..................................................... 6 3.1.3列混合 ..................................................... 8 3.1.4轮密钥加 ................................................... 9 3.1.5密钥调度 .................................................. 10 3.1.6逆字节替换 ................................................ 12 3.1.7逆行移位 .................................................. 12 3.1.8逆列混合 .................................................. 13 3.1.9输出中间状态state和轮密钥temp ............................ 14 3.1.10加密 ..................................................... 14 3.1.11解密 ..................................................... 16 3.2较高要求部分 .................................................... 17

3.2.1 密钥长度192,256的实现 .................................... 17 3.2.2 密钥采用ASCII码 .......................................... 17 3.2.3 明文分组和自动填充 ........................................ 18 3.2.4 任意字符串加密 ............................................ 19 3.2.5 文件加密解密 .............................................. 20 3.2.6 简单计时 .................................................. 21 3.2.7 合理的结构和简单加工的交互界面 ............................ 22 3.3程序界面预览 .................................................... 22

4. 测试报告 ................................................................. 23

4.1测试标准加密解密功能 ............................................ 23 4.2测试字符串加密和解密功能 ........................................ 24

4.2.1 加密 ...................................................... 24 4.2.2 解密 ...................................................... 25 4.3测试文件加密和解密功能 .......................................... 27

4.3.1 加密 ...................................................... 27 4.3.2 解密 ...................................................... 28 4.4测试中发现的一些问题 ............................................ 29

5. 结论..................................................................... 31 参考文献.................................................................... 31

1. 背景与意义

科技的发展使计算机深入到了我们生活的的方方面面,计算机在带来方便和提高了工作效率的同时却也带来了各种各样的新问题,其中信息安全问题最为突出,随着计算机信息安全要求的不断提高, 计算机保密系统已变得越来越重要,所以我们需要一种较为可靠的加密算法来保护我们信息的安全。

由于DES已经无法满足高保密性的要求,美国于1997年1月开始征集新一代数据加密标准(即高级数据加密标准,Advanced Encryption Standard,AES)。2000年10月2日,正式宣布选择比利时密码学家所开发的Rijndael算法成为AES的最终算法。

AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入 数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。

2. 系统设计

2.1系统主要目标

基本要求部分:

1. 在深入理解AES加密/解密算法理论的基础上,设计一个AES加密/解密软件系统; 2. 完成一个明文分组的加解密,明文和密钥是十六进制,长度都为128比特(32个16进制数),按照标准输入明文和密钥,输出密文,进行加密后,能够进行正确的解密; 3. 程序运行时要求输出每一轮使用的密钥,以及每一轮中字节替代、行移位、列混合和密钥加等每一步操作之后的16进制表示的值; 4. 提供运行标准示例的选项; 5. 程序有良好的人机交互操作;

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

较高要求部分:

1.可实现AES128,AES192,AES256三种密钥长度加密方式;

第 1 页 共 33 页

2.密钥以ASCII码形式读入;

3. 可实现明文自动分组功能和自动填充分组功能,并能正确加解密; 4. 可实现任意字符(如中文)的加密和正确解密; 5. 可实现任意小的文件加密,并能正确解密; 6. 简单的计时功能;

7. 程序代码有比较好的结构,函数模块划分合理。

2.2主要软件需求(运行环境)

本软件适用VC语言编写,编译成功后的EXE文件可以在装有windows系统的任何计算机上使用。

测试平台:Windows 7 Professional 使用软件:Visual C++ 6.0

2.3功能模块与系统结构

AES算法是一个数据块长度和密钥长度都可变的迭代分组加密算法,数据块长度和密钥长度可以为128、192、256位。在加密前对数据块做预处理。首先,把数据块分组,16字节一组,然后把字记为列的形式(如下图):

AES把128位的输入看作是一个由16个字节组成的向量,并用一个4×4的列矩阵的形式来表示。

按同样的方式表示一个密钥矩阵,如图所示:

第 2 页 共 33 页