您的位置:首页 > 其它

AES加密算法之行移位变换

2015-11-04 11:01 393 查看
行移位变换完成基于行的循环移位操作,变换方法为:第0行不变,第1行循环左移1个字节,第2行循环左移两个字节,第3行循环左移3个字节。如下图所示。



附上自己敲的C语言源码:
#include <iostream>
using namespace std;

void PrintfMatrix(unsigned char m[4][4])      //该函数是输出数组方法
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
printf("%2x",m[i][j]);
if(j%4==3)
puts("");
}
}
}
void ShiftRow(unsigned char state[4][4])     //行移位变换函数
{
unsigned char st[4];
int i,j;
for(i=1;i<4;i++)
{
for(j=0;j<4;j++)
{
st[j]=state[i][(j+i)%4];
}
for(j=0;j<4;j++)
{
state[i][j]=st[j];
}
}

}
int main()
{
unsigned char state[4][4]={
0,4,8,12,
1,5,9,13,
2,6,10,14,
3,7,11,15,
};
printf("明文为:\n");PrintfMatrix(state);
ShiftRow(state);          //调用行移位函数
printf("移位后:\n");
PrintfMatrix(state);
return 0;
}

程序运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  AES 行移位