AES列混合变换

AES列混合变换

ID:40747801

大小:730.42 KB

页数:9页

时间:2019-08-07

AES列混合变换_第1页
AES列混合变换_第2页
AES列混合变换_第3页
AES列混合变换_第4页
AES列混合变换_第5页
资源描述:

《AES列混合变换》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、再如求s(01)解:因为01=00000001利用欧几里德算法(00000001).(?)mod{m(x)即为11B}=1由于(00000001).(?)=(11A)可以得到?=11A,再因为11A溢出,应该取余,11Amod11B=1即为(01)的逆为(01)S(01)=S(00000001)=f(00000001),代入上式固定仿射得f(00000001)=7c再如求s(02)解:因为02=00000010利用欧几里德算法(00000010).(?)mod{m(x)即为11B}=1由于(00000010).(?)=(11A)可以得到?=8D,即为(02)的逆为(8D

2、)S(02)=S(00000010)=f(10001101),代入上式固定仿射得f(10001101)=77AES加密中列混合的具体算法AES明文在加密过程中涉及到字节代换、行移位、列混合、轮密钥加等过程。这里对列混合的算法做出一些浅显的解释。列混合其实就是对一个状态的每一列去乘一个矩阵,其中乘法是在有限域GF(2^8)内进行的,不可约多项式为x^8+x^4+x^3+x+1如图: 先把算法代码列出来:代码:voidAES::MixColumns(unsignedcharstate[][4])   //列混合{ unsignedchart[4]; intr,c; for(

3、c=0;c<4;c++)     //按列处理 {   for(r=0;r<4;r++)   {     t[r]=state[r][c];     //每一列中的每一个字节拷贝到t[r]中   }   for(r=0;r<4;r++)   {     state[r][c]=FFmul(0x02,t[r])     //矩阵计算,其中加法为异或           ^FFmul(0x03,t[(r+1)%4])           ^FFmul(0x01,t[(r+2)%4])           ^FFmul(0x01,t[(r+3)%4]);   } }} uns

4、ignedcharAES::FFmul(unsignedchara,unsignedcharb)   //有限域GF(2^8)上的乘法{ unsignedcharbw[4]; unsignedcharres=0; inti; bw[0]=b; for(i=1;i<4;i++) {   bw[i]=bw[i-1]<<1;   if(bw[i-1]&0x80)   {     bw[i]^=0x1b;   } } for(i=0;i<4;i++) {   if((a>>i)&0x01)   {     res^=bw[i];   } } returnres;}这里重点是有限

5、域GF(2^8)上的乘法。采用的算法的原理如下:1、 GF(2^8)中任何数乘0x01都不变2、 GF(2^8)中计算乘0x02,可以分两种情况考虑:(1)、原数值小于(10000000),即0x80的时候,乘2后第8个比特不会溢出,那么结果就是原数值左移一位;(2)、原数值大于(10000000),即0x80的时候,乘2后第8个比特会溢出,这样计算:原数值左移一位后(乘2)再除以m(x)=x^8+x^4+x^3+x+1(即为成除以11b)后的余数。如下图所示3、类似第2点,可以得到GF(2^8)中计算乘4、乘8的结果;4、GF(2^8)中计算乘其它数时,可以表示为乘1

6、、2、4、8的线性组合。根据以上几点再对有限域GF(2^8)上的乘法源代码进行解释:代码:unsignedcharAES::FFmul(unsignedchara,unsignedcharb)   //有限域GF(2^8)上的乘法{ unsignedcharbw[4]; unsignedcharres=0; inti; bw[0]=b; for(i=1;i<4;i++)     //循环三次,分别得到参数b乘2、4、8后的值,储存到bw[i]里面 {   bw[i]=bw[i-1]<<1;   //原数值乘2   if(bw[i-1]&0x80)   //判断原数值是否

7、小于0x80   {     bw[i]^=0x1b;   //如果大于0x80的话,减去一个不可约多项式   } } for(i=0;i<4;i++) {   if((a>>i)&0x01)     //将参数a的值表示为1、2、4、8的线性组合   {     res^=bw[i];  } } returnres;}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。