编辑: 学冬欧巴么么哒 | 2019-07-03 |
1 设计背景
1 设计目的
1 1 开发环境
1 1.
1开发语言介绍
1 1.2理论知识介绍
1 1.3理论知识介绍
1 2 AES算法的一般描述
2 3 系统设计
2 3.1系统主要目标
2 3.1.1主要软件需求(运行环境)
2 3.1.2系统主要目标
2 3.1.3设计约束,限制
2 3.2系统结构
3 3.2.1软件操作流程
3 3.2.2功能模块
3 3.3系统功能程序设计
3 3.3.1密钥设置模块
3 3.3.2解密函数
6 3.3.3密钥加模块
7 3.3.4字节替换模块
7 3.3.5行位移模块
8 3.3.6加密列混合模块
9 3.3.7 密钥选取模块
11 3.4 程序界面浏览
11 4 测试报告
11 5 结论
12 参考文献
13 AES加密解密的实现 绪论 设计背景 1997年4月5日NIST发起征集AES(Advanced Encryption Standard)算法 1998年8月20日NIST召开了第一次AES候选会议,并公布了满足候选要求的15个AES候选算法. 后来,NIST又从这15个算法筛选出了5个AES候选算法,2000年10月,NIST宣布由比利时的密码专家Joan Daemen博士和Vincent Rijmen博士开发的Rijndael算法被选择成为AES的最终算法. 设计目的 这个是期末的密码学课程设计,要求能用AES进行文本和TXT文件的加密和解密,从而加深对AES算法的理解以及编程能力的提高.
1 开发环境 1.1开发语言介绍 随着软件工程技术的不断发展,面向对象的编程技术已经成为当今软件开发的重要手段之一,尤其是Visual C++的出现,大大推进了面向对象与可视化编程技术的应用与发展,这样VC的优点不言而喻,特别是微软的MFC,更是为广大编程人员的喜爱. 本程序使用的VC语言,采用了MFC进行编写,因此,运行本套系统需要安装Microsoft Visual C++ 6.0. 1.2理论知识介绍 AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范. 美国国家技术标准委员会(NIST)在2000年10月选定了比利时的研究成果 Rijndael 作为AES的基础. Rijndael 是经过三年漫长的过程,最终从进入候选的五种方案中挑选出来的.Rijndael这个名字是从它的两个发明者Rijmen和Daemen的名字得来的. 它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法. AES 是一个迭代的、对称密钥分组的密码,它可以使用
128、192 和256 位密钥,并且用
128 位(16字节)分组加密和解密数据.与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据.通过分组密码返回的加密数据的位数与输入数据相同.迭代加密使用一个循环结构,在该循环中重复置换(permutations )和替换(substitutions)输入数据.
2 AES算法的一般描述
3 系统设计 3.1系统主要目标 3.1.1主要软件需求(运行环境) 本软件使用的VC语言编写,在Microsoft Visual C++ 6.0编译成功后的EXE文件可以在装有windows系统的任何计算机上使用. 输入:加密:任意长度的明文 解密:16倍数位16进制的密文 输出:加密后:16倍数位16进制 解密后:正常的明文 WINDOW 9x,XP,NT,200X. 3.1.2系统主要目标 成功演示计算AES的密码算法,根据输入对文本或者文件进行加密解密,界面简单好用人性化.充分的显示出AES的优势,密钥分组长度只有128bit,可满足一般用户的不同需求,加密一定量的文档,速度要求比较快.操作简单,功能要强大. 3.1.3设计约束,限制 本软件为独立软件,不与其它系统联系,仅支持单人操作,所有内容自含. 3.2系统结构 3.2.1软件操作流程 加密: (1) 可以在 明文 窗口中输入明文,或者在 待加解密文件 选择你要加密的文件,并在 存放位置 选择加密文件的保存位置. (2) 手动输入128位密钥并可以重置密钥和选择密钥. (3) 按 加密 或者 开始加密 进行加密. (4) 加密完成后, 密文 窗口将显示加密后的结果, 存放位置 生成加密后的文件. 解密: (1) 可以在 密文 窗口中输入密文,或者按 选择加解密文件 选择一个密文文件,并按 存放位置 选择解密文件的保存位置. (2) 手动输入128位密钥并可以重置密钥和选择密钥. (3) 按 解密 或者 开始解密 进行解密. (4) 解密完成后, 明文 窗口将显示解密后的结果, 存放位置 生成解密后的文件. 3.2.2功能模块 编号模块名称模块标识1密钥设置模块 void keyexpansion