- AES算法处理的单位是字节,分组长度只能是128位,即16字节。密钥的长度可以使用128,192,256位,分别对应的加密轮数为10,12,14.
- 首先将128位的输入明文转换为以字节为单位的4*4的状态矩阵,每一列是一个状态字。
- 128位的秘钥通过秘钥编排函数扩展成一个44个字组成的序列,前4个元素是原始秘钥,用于加密运算的初秘钥加,后40个分成10组,用于10轮加密的轮秘钥加。
字节代换:借助S盒实现字节到字节的代替。
行移位:循环左移0,1,2,3字节
列混合:矩阵相乘,同时还要模m(x)
轮秘钥加:和扩展秘钥进行按位异或。
具体操作方法:
字节代换:高4位表示行,低4位表示列,查表代换。
行移位:循环左移0,1,2,3字节
列混合:矩阵相乘,同时还要模m(x)
秘钥扩展:
T函数:
- 字循环:将一个字中的4个字节循环左移1个字节
- 字节代替:S盒代换
- 轮常量异或: