AES算法实验报告

上传人:hloru****lorv6 文档编号:61711081 上传时间:2022-03-12 格式:DOC 页数:7 大小:181.50KB
收藏 版权申诉 举报 下载
AES算法实验报告_第1页
第1页 / 共7页
AES算法实验报告_第2页
第2页 / 共7页
AES算法实验报告_第3页
第3页 / 共7页
资源描述:

《AES算法实验报告》由会员分享,可在线阅读,更多相关《AES算法实验报告(7页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上实 验 报 告 专心-专注-专业姓名: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 是一个迭代的、对称密钥分组的密码,它可

2、以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据 的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations )和替换(substitutions)输入数据。Figure 1 显示了 AES 用192位密钥对一个16位字节数据块进行加密和解密的情形。对称密码算法根据对明文消息加密方式的不同可分为两大类 ,即分组密码和流密码 。分组密码将消息分为固定长度的分组 ,输出的密文分组通常与输入的明文分组长度相同 。AES 算法属

3、于分组密码算法 ,它的输入分组 、输出分组以及加/ 解密过程中的中间分组都是 128比特 。密钥的长度 K为 128,192 或 256 比特 。用 Nk=4,6,8 代表密钥串的字数 ( 1 字 =32 比特) ,在本文编制的程序中由用户选定 。用 Nr 表示对一个数据分组加密的轮数 ( 加密轮数与密钥长度的关系见表 1) 。每一轮都需要一个和输入分组具有同样长度 ( 128 比特) 的扩展密钥Ke的参与 。由于外部输入的加密密钥 K 长度有限 ,所以在 AES 中要用一个密钥扩展程序 ( KeyExpansion) 把外部密钥 K 扩展成更长的比特串 ,以生成各轮的加密密钥。( 1) 加密

4、变换设 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

5、位数据,密钥长度也是128位。用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表1所列)。每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与。由于外部输入的加密密钥K长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密和解密密钥。1.1圈变化AES每一个圈变换由以下三个层组成:非线性层进行Subbyte变换;线行混合层进行ShiftRow和MixColumn运算;密钥加层进行AddRoundKey运算。 Subbyte变换是作用在状态中每个字节上的一种非线性字节转换,可以通过计算出来

6、的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)。

7、 密钥加层运算(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=;

8、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; r4; r+)for(c=0; c4 ;c+)staterc = inputc*4+r;AddRoundKey(state,w0);for

9、(i=1; i=10; i+)SubBytes(state);ShiftRows(state);if(i!=10)MixColumns(state);AddRoundKey(state,wi);for(r=0; r4; r+)for(c=0; c4 ;c+)inputc*4+r = staterc;return input;unsigned char* AES:InvCipher(unsigned char* input)unsigned char state44;int i,r,c;for(r=0; r4; r+)for(c=0; c=0; i-)InvShiftRows(state);In

10、vSubBytes(state);AddRoundKey(state, wi);if(i)InvMixColumns(state);for(r=0; r4; r+)for(c=0; c4 ;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; ilength; i+=16)Cipher(in+i);return input;unsigned char* in = (un

11、signed char*) input;int i;for(i=0; ilength; 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; r4; r+)for(c=0; c4; c+)w0rc = keyr+c*4;for(i=1; i=10; i+)for(j=0; j4; j+)unsigned char t4;for(r=0; r4; r+)tr = j ? wirj-1 : wi-1r3;if(j

12、 = 0)unsigned char temp = t0;for(r=0; r3; r+)tr = Sboxt(r+1)%4;t3 = Sboxtemp;t0 = rci-1;for(r=0; r4; r+)wirj = wi-1rj tr;int r,c;for(r=0; r4; r+)for(c=0; c4; c+)staterc = Sboxstaterc;unsigned char t4;int r,c;for(r=1; r4; r+)for(c=0; c4; c+)tc = stater(c+r)%4;for(c=0; c4; c+)staterc = tc;void AES:Add

13、RoundKey(unsigned char state4, unsigned char k4)int r,c;for(c=0; c4; c+)for(r=0; r4; r+)staterc = krc;void AES:InvSubBytes(unsigned char state4)int r,c;for(r=0; r4; r+)for(c=0; c4; c+)staterc = InvSboxstaterc;void AES:InvShiftRows(unsigned char state4)unsigned char t4;int r,c;for(r=1; r4; r+)for(c=0

14、; c4; c+)tc = stater(c-r+4)%4;for(c=0; c4; c+)staterc = tc;void AES:InvMixColumns(unsigned char state4)unsigned char t4;int r,c;for(c=0; c 4; c+)for(r=0; r4; r+)tr = staterc;for(r=0; r4; r+)staterc = FFmul(0x0e, tr) FFmul(0x0b, t(r+1)%4) FFmul(0x0d, t(r+2)%4) FFmul(0x09, t(r+3)%4);四、实验总结分析心得体会AES加密算法是前辈们付出很多才有的知识。在短时间的学习过程中我也只是了解了加解密的具体流程,而对于为什么要进行这种操作的思考就显得很浅显,所以还要多花一点时间去更深层次的研究本质思想。希望在以后的学习实践中,能够有更多的收获。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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