AES加密算法之行移位变换

来源:互联网 发布:网络诈骗了2000要判刑 编辑:程序博客网 时间:2024/06/07 15:13

行移位变换完成基于行的循环移位操作,变换方法为:第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;}

程序运行结果如下:
0 0