int shiftRows(uint8_t (*state)[4]) { uint32_t block[4] = {0}; /* i: row */ for (int i = 0; i < 4; ++i) { //便于行循环移位,先把一行4字节拼成uint_32结构,移位后再转成独立的4个字节uint8_t LOAD32H(block[i], state[i]); block[i] = ROF32(block[i], 8*i); //block[i]循环左移8*i位,如第0行左移0位 STORE32H(block[i], state[i]); } return 0; }
时间: 2024-04-03 21:31:35 浏览: 180
AES.rar_https ://aes63.com_https://aes63.com/_spreadtw4_接口Ase加密
5星 · 资源好评率100%
这段代码是实现AES加密中ShiftRows操作的函数,它将输入的4x4状态矩阵进行行移位操作。具体来说,每行循环左移若干个字节,第一行不变,第二行左移1字节,第三行左移2字节,第四行左移3字节。这个函数使用了一个辅助数组block,将每行的4个字节先拼成一个32位的整数,然后对这个整数进行循环左移操作,最后再将结果存回到状态矩阵中。在代码中,LOAD32H和STORE32H是一些宏定义,用于将字节序转换成网络字节序(大端序)。ROF32是一个自定义的宏,用于实现循环左移操作。
阅读全文