AES算法是美国国家标准技术研究所(National Institute of Standardsand Technology,NIST)在2000年10月确定的高级加密标准(Advanced Encryption Standard,AES),用以取代DES。
AES为分组密码,在AES标准规范中,分组长度只能是128位,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。
1.初始变换
明文矩阵和初始子密钥矩阵按字节进行异或操作。
2.循环运算
2.1字节代换
按照S盒,完成一个字节到另一个字节的映射(查表,几行几列替换)。
2.2 行移位
第一行不变,第二行左移1个字节,第三行左移2个字节,第四行左移3个字节
2.3列混合
左乘一个固定矩阵
2.4轮密钥加
矩阵和子密钥矩阵异或
*密钥扩展
1.如果i不是4的倍数,那么W[i]=W[i-4]⊕W[i-1],如w5=w1⊕w4
i取决于是否是4的倍数
密钥扩展 i不是4的倍数
2.如果i是4的倍数,那么W[i]=W[i-4]⊕T(W[i-1]),如w4=w0⊕T(w3)
函数T由三部分组成:字循环,字节代换和轮常量异或。
字循环
查表,字节代换
轮常量异或