编程实现AES算法的加密解密过程.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息安全工程课程 实验报告 课程名称:信息安全工程 学生姓名: 学生学号: 专业班级: 任课教师:蔡忠闽 目录 1 背景与意义 3 2 实验要求 3 3.系统设计 4 3.1系统主要目标 4 3.2主要软件需求(运行环境) 4 4 AES算法加密和解密原理分析 4 4.1加密过程基本变换 6 4.2解密过程基本变换 6 4.3密钥扩展算法 7 5.系统功能程序设计 7 6. 测试报告 17 6.1 加密 17 6.2 解密 19 7 实验总结 21 1 背景与意义 科技的发展使计算机深入到了我们生活的的方方面面,计算机在带来方便和提高了工作效率的同时却也带来了各种各样的新问题,其中信息安全问题最为突出,随着计算机信息安全要求的不断提高, 计算机保密系统已变得越来越重要,所以我们需要一种较为可靠的加密算法来保护我们信息的安全。 由于DES已经无法满足高保密性的要求,美国于1997年1月开始征集新一代数据加密标准(即高级数据加密标准,Advanced Encryption Standard,AES)。2000年10月2日,正式宣布选择比利时密码学家所开发的Rndael算法成为AES的最终算法。 AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入 数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。 该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael之命名之,投稿高级加密标准的甄选流程。(Rijdael的发音近于 Rhine doll。)一人一组 AES算法加密和解密原理分析 (3)提交完整的源程序提交程序的设计,说明文档 用ECBCBC,对给定内容进行加密和解密,提交解密结果,并提交实验心得,着重阐述对实验的理解 6)程序调试成功后,处理以下内容: A、AES 加密 明文:各自的姓名+邮箱 秘钥:各自的手机号 B、AES解密 密文:邮箱附件给出 秘钥:(给出秘钥为ASCII码形式,请将ASCII码转为二进制,不满128位在其后补零)3.系统设计 3.1系统主要目标 1.在深入理解AES加密/解密算法理论的基础上,设计一个AES加密/解密软件系统; 2.完成一个明文分组的加解密,明文和密钥是十六进制,输入明文和密钥,输出密文,进行加密后,能够进行正确的解密; 3. 按要求提供所设计系统的报告及完整的软件。 3.2主要软件需求(运行环境) 本软件适用VC语言编写,编译成功后的EXE文件可以在装有windows系统的任何计算机上使用。 测试平台:Windows 8 使用软件:Visual Studio 2012/C++ 4 AES算法加密和解密原理分析 AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥长度,并且用128位分组长度加密和解密数据[2]。该算法输入分组、输出分组、状态长度均为128比特。 对于AES算法的运算是在一个称为状态的二维字节数组上进行。一个状态由四行组成,每一行包括Nb个字节,Nb等于分组长度除以32,AES分组长度为128位,因此,Nb=4,该值反应了状态中32-bit字的个数(列数);密钥长度128、192和256位可分别表示为Nk=4、6或8,反应了密钥中32-bit字的个数(列数)。而AES算法的轮数Nr仅依赖于密钥长度Nk,轮数和密钥长度的关系可以表示为:Nr=6+Nk。密钥长度—分组长度—轮数的关系如表1所示。 表1 Key-Block-Round关系 密钥长度 (Nk words) 分组长度 (Nb words) 轮数 (Nr) 4 4 10 6 4 12 8 4 14 对于加密和解密变换,AES算法使用的轮函数由4个不同的以字节为基本单位的变换复合而成,该过程由四个不同的阶段组成[3]: (1)S盒变换,用一个S盒完成分组中的按字节代替;(2)行移位变换,一个简单的置换;(3)列混淆变换,一个利用在域GF(28) 上的算术性的代替;(4)轮密钥加变换,一个利用当前分组和扩展密钥的一个部分进行按位异或。 AES对数据的加密过程是通过把输入的明文和密钥由轮函数经Nr轮迭代来实现的,结尾轮与前N

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档