C语言——依据行数循环左移数据

来源:互联网 发布:造纸术的影响 知乎 编辑:程序博客网 时间:2024/06/03 16:28

这是今天做AES加密算法,其中一个步骤:行移位(ShiftRows).

操作内容:

第0行循环左移0位;

第1行循环左移1位;

第2行循环左移2位;

第3行循环左移3位。


代码实现:


int main(int argc, char* argv[]){char test[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };printf("test\r\n");for (int i = 0; i < 4; i++) {for (int j = 0; j < 4; j++) {printf("%d,",test[4*i+j]);}printf("\n");}printf("依据行数循环左移row位\r\n");for (int i = 1; i < 4; i++)//循环每行,仅循环后3行{int s = 0;while (s < i)//依据行数循环左移row位{char tmp = test[4*i+0];//获取末位数据for (int k = 1; k < 4; k++) //前3个数据均左移1位{test[4*i+k-1] = test[4*i+k];}test[4*i+4-1] = tmp;//将第一个数据填充至本行最后的数据位上s++;}}for (int i = 0; i < 4; i++) {for (int j = 0; j < 4; j++) {printf("%d,",test[4*i+j]);}printf("\n");}//释放内存getchar();return 0;}


原创粉丝点击