AES密码学课程设计(C语言实现)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、设计的目标
2.1 基本目标:
(1)在深入理解 AES 加密/解密算法理论的基础上,能够设计一个 AES 加密/解密软件 系统,采用控制台模式,使用 VS2010 进行开发,所用语言为 C 语言进行编程,实现加密解 密; (2)能够完成只有一个明文分组的加解密,明文和密钥是 ASCII 码,长度都为 16 个字 符(也就是固定明文和密钥为 128 比特),输入明文和密钥,输出密文,进行加密后,能够进
2.2 较高目标:
能完成以下全部或部分功能: (1)如果从文件读取的明文不止一个分组,程序能完成分组,然后加密;最后一个分 组长度不足时要求完成填充;输入信息可以是文本文档,或者普通文件。进行加密后,能够 进行正确的解密; (2)密钥包括 128bit、192bit、256bit 三种情况,有三种情况时与标准 fips-197 进行比 较的独立模块,且从文本文件读取。 (3)程序代码有比较好的结构,模块划分合理,如用类进行封装,通过调用类的成员 函数实现加密解密功能,函数的参数及返回值设置合理等; (4)对加密大文件的考虑; (5)多线程的使用; (6)界面友好,程序设计实现有创新。
2
1、选题背景
高级加密标准(Advanced Encryption Standard,AES) ,在密码学中又称 Rijndael 加 密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的 DES,已经被多 方分析且广为全世界所使用。 经过五年的甄选流程, 高级加密标准由美国国家标准与技术研 究院(NIST)于 2001 年 11 月 26 日发布于 FIPS PUB 197,并在 2002 年 5 月 26 日成为有效 的标准。2006 年,高级加密标准已然成为对称密钥加密中最流行的算法之一。该算法为比 利时密码学家 Joan Daemen 和 Vincent Rijmen 所设计,结合两位作者的名字,以 Rijndael 之命名之,投稿高级加密标准的甄选流程。 (Rijndael 的发音近于 "Rhine doll") 严格地说,AES 和 Rijndael 加密法并不完全一样(虽然在实际应用中二者可以互换) , 因为 Rijndael 加密法可以支援更大范围的区块和密钥长度:AES 的区块长度固定为 128 位 元,密钥长度则可以是 128,192 或 256 位元;而 Rijndael 使用的密钥和区块长度可以是 32 位元的整数倍, 以 128 位元为下限, 256 位元为上限。 加密过程中使用的密钥是由 Rijndael 密钥生成方案产生。大多数 AES 计算是在一个特别的有限域完成的。 截至 2006 年,针对 AES 唯一的成功攻击是旁道攻击 旁道攻击不攻击密码本身,而是攻击那些实作于不安全系统(会在不经意间泄漏资讯)上 的加密系统。2005 年 4 月,D.J. Bernstein 公布了一种缓存时序攻击法,他以此破解了一 个装载 OpenSSL AES 加密系统的客户服务器[6]。为了设计使该服务器公布所有的时序资讯, 攻击算法使用了 2 亿多条筛选过的明码。 有人认为[谁?], 对于需要多个跳跃的国际互联网 而言,这样的攻击方法并不实用[7]。 Bruce Schneier 称此攻击为“好的时序攻击法”[8]。 2005 年 10 月,Eran Tromer 和另外两个研究员发表了一篇论文,展示了数种针对 AES 的缓 存时序攻击法。其中一种攻击法只需要 800 个写入动作,费时 65 毫秒,就能得到一把完整 的 AES 密钥。 但攻击者必须在执行加密的系统上拥有执行程式的权限, 方能以此法破解该密 码系统。 虽然高级加密标准也有不足的一面,但是,它仍是一个相对新的协议。因此,安全研究人 员还没有那么多的时间对这种加密方法进行破解试验。 我们可能会随时发现一种全新的攻击 手段会攻破这种高级加密标准。至少在理论上存在这种可能性。
成 都 信 息 工 程 学 院 课ຫໍສະໝຸດ Baidu程 设 计 报 告
AES加密解密软件的实现
1
目录
1、选题背景.............................................................................................................................. 3 2、设计的目标.......................................................................................................................... 3 2.1 基本目标:...................................................................................................................... 3 2.2 较高目标:...................................................................................................................... 4 3、功能需求分析...................................................................................................................... 4 4、模块划分.............................................................................................................................. 5 4.1、密钥调度....................................................................................................................... 5 4.2、加密............................................................................................................................... 7 4.2.1、字节代替(SubBytes)........................................................................................ 7 4.2.2、行移位(ShiftRows).......................................................................................... 9 4.2.3、列混合(MixColumn)........................................................................................ 10 4.2.4、轮密钥加(AddRoundKey)................................................................................ 12 4.2.5、加密主函数.......................................................................................................... 13 4.3、解密............................................................................................................................. 15 4.3.1、逆字节替代(InvSubBytes)............................................................................ 15 4.3.2、逆行移位(InvShiftRows).............................................................................. 16 4.3.3、逆列混合(InvMixCloumns)............................................................................ 16 4.3.4、轮密钥加(AddRoundKey)................................................................................ 17 4.3.5、解密主函数.......................................................................................................... 17 5.测试报告............................................................................................................................... 19 5.1 主界面.......................................................................................................................... 19 5.2 测试键盘输入明文和密钥加密.................................................................................. 19 5.3 测试键盘输入密文和密钥加密.................................................................................. 20 5.3 测试文件输入明文和密钥加密.................................................................................. 21 5.4 测试文件输入密文和密钥加密.................................................................................. 21 5.5 软件说明...................................................................................................................... 22 6.课程设计报告总结............................................................................................................... 22 7.参考文献............................................................................................................................... 23
3
行正确的解密; (3)程序运行时,能够按照要求输出最后两轮的轮密钥,以及最后两轮加密或解密之后 的值,16 进制表示; (4)程序有良好的人机交互操作; (5)能够实现从两个文件分别读取明文和密钥,并在程序中输出明文及密钥; (6)要求有与标准 fips-197 进行比较的独立模块; (7)最后提供所设计系统的报告及完整的软件,关键代码等。