欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

AES算法实验报告

  • 资源ID:61711081       资源大小:181.50KB        全文页数:7页
  • 资源格式: DOC        下载积分:20积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要20积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

AES算法实验报告

精选优质文档-倾情为你奉上实 验 报 告 专心-专注-专业姓名:XXXXXXX 学 号:XXXXXXXXXX 班级:XXXXXXXXX 日期:2013/12/*题目:AES算法实验一、实验环境 1硬件配置:处理器:Inter(R) Core(TM) i5-2430M CPU 2.40GHz (4 CPUs) ,2.4GHz内存:2048MB RAM2使用软件:(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 Sk(r+1 ) S kr R Ak(r21)其中 ”“表示复合运算 。这里 Aki :表示对 X 的一个变换Aki ( X) =X Ki ( Ki为第 i 轮的子密钥 ,为比特串的异或运算) 。S:S 盒置换 。即对每一个字节用 S2Box 做一个置换 。S2Box 是一个给定的转换表 。R: 行置换 。C: 列置(换 。sx) =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密钥扩展    AES算法利用外部输入密钥K(密钥串的字数为Nk),通过密钥的扩展程序得到共计4(Nr+1)字的扩展密钥。它涉及如下三个模块:  位置变换(rotword)把一个4字节的序列A,B,C,D变化成B,C,D,A;  S盒变换(subword)对一个4字节进行S盒代替;  变换RconiRconi表示32位比特字xi-1,00,00,00。这里的x是(02),如 Rcon1=;Rcon2=;Rcon3=      扩展密钥的生成:扩展密钥的前Nk个字就是外部密钥K;以后的字W等于它前一个字Wi-1与前第Nk个字Wi-Nk的“异或”,即W=Wi-1W- Nk。但是若为Nk的倍数,则W=Wi-NkSubword(Rotword(W-1)Rconi/Nk。流程图:主要代码:unsigned char* AES:Cipher(unsigned char* input)unsigned char state44;int i,r,c;for(r=0; r<4; r+)for(c=0; c<4 ;c+)staterc = inputc*4+r;AddRoundKey(state,w0);for(i=1; i<=10; i+)SubBytes(state);ShiftRows(state);if(i!=10)MixColumns(state);AddRoundKey(state,wi);for(r=0; r<4; r+)for(c=0; c<4 ;c+)inputc*4+r = staterc;return input;unsigned char* AES:InvCipher(unsigned char* input)unsigned char state44;int i,r,c;for(r=0; r<4; r+)for(c=0; c<4 ;c+)staterc = inputc*4+r;AddRoundKey(state, w10);for(i=9; i>=0; i-)InvShiftRows(state);InvSubBytes(state);AddRoundKey(state, wi);if(i)InvMixColumns(state);for(r=0; r<4; r+)for(c=0; c<4 ;c+)inputc*4+r = staterc;unsigned char* in = (unsigned char*) input;int i;if(!length)while(*(in+length+);in = (unsigned char*) input;for(i=0; i<length; i+=16)Cipher(in+i);return input;unsigned char* in = (unsigned char*) input;int i;for(i=0; i<length; i+=16)InvCipher(in+i);int i,j,r,c;unsigned char rc = 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36;for(r=0; r<4; r+)for(c=0; c<4; c+)w0rc = keyr+c*4;for(i=1; i<=10; i+)for(j=0; j<4; j+)unsigned char t4;for(r=0; r<4; r+)tr = j ? wirj-1 : wi-1r3;if(j = 0)unsigned char temp = t0;for(r=0; r<3; r+)tr = Sboxt(r+1)%4;t3 = Sboxtemp;t0 = rci-1;for(r=0; r<4; r+)wirj = wi-1rj tr;int r,c;for(r=0; r<4; r+)for(c=0; c<4; c+)staterc = Sboxstaterc;unsigned char t4;int r,c;for(r=1; r<4; r+)for(c=0; c<4; c+)tc = stater(c+r)%4;for(c=0; c<4; c+)staterc = tc;void AES:AddRoundKey(unsigned char state4, unsigned char k4)int r,c;for(c=0; c<4; c+)for(r=0; r<4; r+)staterc = krc;void AES:InvSubBytes(unsigned char state4)int r,c;for(r=0; r<4; r+)for(c=0; c<4; c+)staterc = InvSboxstaterc;void AES:InvShiftRows(unsigned char state4)unsigned char t4;int r,c;for(r=1; r<4; r+)for(c=0; c<4; c+)tc = stater(c-r+4)%4;for(c=0; c<4; c+)staterc = tc;void AES:InvMixColumns(unsigned char state4)unsigned char t4;int r,c;for(c=0; c< 4; c+)for(r=0; r<4; r+)tr = staterc;for(r=0; r<4; r+)staterc = FFmul(0x0e, tr) FFmul(0x0b, t(r+1)%4) FFmul(0x0d, t(r+2)%4) FFmul(0x09, t(r+3)%4);四、实验总结分析心得体会AES加密算法是前辈们付出很多才有的知识。在短时间的学习过程中我也只是了解了加解密的具体流程,而对于为什么要进行这种操作的思考就显得很浅显,所以还要多花一点时间去更深层次的研究本质思想。希望在以后的学习实践中,能够有更多的收获。

注意事项

本文(AES算法实验报告)为本站会员(hloru****lorv6)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!