AES算法实验报告.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AES算法实验报告

实 验 报 告 姓名:XXXXXXX 学 号:XXXXXXXXXX 班级:XXXXXXXXX 日期:2013/12/* 题目:AES算法实验 一、实验环境 1.硬件配置: 处理器:Inter(R) Core(TM) i5-2430M CPU @ 2.40GHz (4 CPUs) ,~2.4GHz 内存:2048MB RAM 2.使用软件: (1) 操作系统:win7 旗舰版 (2) 软件工具:Microsoft Visual c++ 6.0 二、实验涉及的相关概念或基本原理 AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据 的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations )和替换(substitutions)输入数据。Figure 1 显示了 AES 用192位密钥对一个16位字节数据块进行加密和解密的情形。对称密码算法根据对明文消息加密方式的不同可分为两大类 ,即分组密码和流密码 。分组密码将消息分为固定长度的分组 ,输出的密文分组通常与输入的明文分组长度相同 。AES 算法属于分组密码算法 ,它的输入分组 、输出分组以及加/ 解密过程中的中间分组都是 128比特 。密钥的长度 K为 128,192 或 256 比特 。用 Nk=4,6,8 代表密钥串的字数 ( 1 字 =32 比特) ,在本文编制的程序中由用户选定 。用 Nr 表示对一个数据分组加密的轮数 ( 加密轮数与密钥长度的关系见表 1) 。每一轮都需要一个和输入分组具有同样长度 ( 128 比特) 的扩展密钥Ke的参与 。由于外部输入的加密密钥 K 长度有限 ,所以在 AES 中要用一个密钥扩展程序 ( KeyExpansion) 把外部密钥 K 扩展成更长的比特串 ,以生成各轮的加密密钥。 ( 1) 加密变换设 X 是 AES 的 128 比特明文输入 ,Y 是 128 比特的密文输出 ,则 AES 密文 Y可以用下面的复合变换表示 : Y=A R A C? S?… C? S?k(r+1 ) ? S? kr? R? Ak(r21) 其中 ”“ 。这里 Aki :表示对 X 的一个变换Aki ( X) =X Ki ( Ki为第 i 轮的子密钥 ,为比特串的异或运算) 。S:S 盒置换 。即对每一个字节用 S2Box 做一个置换 。S2Box 是一个给定的转换表 。R: 行置换 。C: 列置 (换 。s′x) =a ( x) s ( x) 解密变换是加密变换的逆变换 ?AES是分组密钥,算法输入128位数据,密钥长度也是128位。用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表1所列)。每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与。由于外部输入的加密密钥K长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密和解密密钥。 1.1圈变化 ????AES每一个圈变换由以下三个层组成: ????非线性层——进行Subbyte变换; ????线行混合层——进行ShiftRow和MixColumn运算; ????密钥加层——进行AddRoundKey运算。 Subbyte变换是作用在状态中每个字节上的一种非线性字节转换,可以通过计算出来的S盒进行映射。 ShiftRow是一个字节换位。它将状态中的行按照不同的偏移量进行循环移位,而这个偏移量也是根据Nb的不同而选择的[3]。 在MixColumn变换中,把状态中的每一列看作GF(28)上的多项式a(x)与固定多项式c(x)相乘的结果。 b(x)=c(x)*a(x)的系数这样计算: *运算不是普通的乘法运算,而是特殊的运算,即 b(x)=c(x)·a(x)(mod x4+1) 对于这个运算 b0=02。a0+03。a1+a2+a3 令xtime(a0)=02。a0 其中,符号“。”表示模一个八次不可约多项式的同余乘法[3]。 对于逆变化,其矩阵C要改变成相应的D,即b(x)=d(x)*a(x)。 密钥加层运算(addround)是将圈密钥状态中的对应字节按位“异或”。 根据线性变化的性质[1],解密运算是加密变化的逆变化。这里不再详细叙述。 ? 1.2轮变化    ? ????对不同的分组长度,其对应的轮变化次数是不同的,如表1所列。 1.3密钥扩展  

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档