昆明理工大学网络安全实验报告2AES加解密算法的实现.doc

昆明理工大学网络安全实验报告2AES加解密算法的实现.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
昆明理工大学网络安全实验报告2AES加解密算法的实现

昆明理工大学信息工程与自动化学院学生实验报告 ( 2011 —2012 学年 第 2 学期 ) 课程名称:网络安全 开课实验室:应用、网络机房442 2012 年12 月21日 年级、专业、班 计科093 学号 200910405310 姓名 孙浩川 成绩 实验项目名称 AES加解密算法的实现 指导教师 缪祥华 教师评语 该同学是否了解实验原理: A.了解□ B.基本了解□ C.不了解□ 该同学的实验能力: A.强 □ B.中等 □ C.差 □ 该同学的实验是否达到要求: A.达到□ B.基本达到□ C.未达到□ 实验报告是否规范: A.规范□ B.基本规范□ C.不规范□ 实验过程是否详细记录: A.详细□ B.一般 □ C.没有 □ 教师签名: 年 月 日 实验目的 1、对算法描述可进行充分理解,精确理解算法的各个步骤。 2、完成AES软件算法的详细设计。 3、用C++完成算法的设计模块。 4、编制测试代码。 实验原理及基本技术路线图(方框原理图) AES 是一种可用来保护电子数据的新型加密算法。特别是,AES 是可以使用 128、192 和 256 位密钥的迭代式对称密钥块密码,并且可以对 128 位(16 个字节)的数据块进行加密和解密。与使用密钥对的公钥密码不同的是,对称密钥密码使用同一个密钥来对数据进行加密和解密。由块密码返回的加密数据与输入数据具有相同的位数。迭代式密码使用循环结构来针对输入数据反复执行排列和置换运算。 2.2 算法实现 以加密函数为例,如下所示,首先对密钥进行预处理密钥扩展,然后明文进行Nr(Nr与密钥长度有关)次迭代运算,包括字节代换ShiftRows行移位、MixColumns、列混合以及AddRoundKey密钥加。 void Cipher() { int i,j,round=0; // 把明文赋值到状态数组中 for(i=0;i4;i++) for(j=0;j4;j++) state[j][i] = in[i*4 + j]; // 先与初始轮密钥相加 AddRoundKey(0); // 第一轮至(Nr-1)轮的迭代运算,第Nr轮不用进行列混合运算 for(round=1;roundNr;round++) { SubBytes(); //字节代换 ShiftRows(); //行移位 MixColumns(); //列混合 AddRoundKey(round); //密钥加 } SubBytes(); ShiftRows(); AddRoundKey(Nr); // 加密结束,将机密结果填入数组out中以便输出 for(i=0;i4;i++) for(j=0;j4;j++) out[i*4+j]=state[j][i]; } 解密函数的流程和加密函数是一致的,只是对于行变换、列变换、以及相关s盒子为加密的逆过程。 字节代换(SubBytes)字节代换是非线形变换,独立地对状态的每个字节进行。 行移位(ShiftRows)是将状态阵列的各行进行循环移位,不同状态行的位移量不同。第0行不移动,第1行循环左移C1个字节,第2行循环左移C2个字节,第3行循环左移C3个字节。位移量C1、C2、C3的取值与Nb有关。 列混合(MixColumns)是将状态阵列的每个列视为多项式,再与一个固定的多项式c(x)进行模x4+1乘法。Rijndael的设计者给出的c(x)为(系数用十六进制数表示):c(x)=‘03’x3+‘01’x2+‘01’x+‘02’。 密钥加(AddRoundKey)是将轮密钥简单地与状态进行逐比特异或。轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度等于分组长度Nb。 程序流程图 AES流程图 所用仪器、材料(设备名称、型号、规格等) 计算机一台、vc6.0 四、实验方法、步骤 #includestring.h #includestdio.h #includemath.h #includeconio.h // 中间结果state的分组的矩阵有4行,列数记为Nb #define Nb 4 // 机密轮数,初始化为0 int Nr=0; // 种子密钥以字节为元素的矩阵阵列表

文档评论(0)

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

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

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档