一、AES
AES ,即advanced encryption standard, 高级加密标准, 它属于对称加密算法,加密解密使用同一密钥。
输入:16B的分组
密钥:128位(16B)、196位(24B)或256位(32B)
不同位数的密钥,决定后面加密/解密的轮数。16B的密钥,将进行10轮加密/解密;24B的密钥,将进行12轮加密/解密;32B的密钥,将进行14轮加密/解密;
输出:16B的分组
二、加密流程
1. 密钥的产生(key schedule)
根据输入的密钥,进行密钥扩展,生成轮加密中使用的子密钥.
2. 初始
明文和密钥进行AddRoundKey, 即明文字节和密钥字节进行异或运算
3. 轮加密
(1) SubBytes
假设State表中当前字节为XY, 则在SBox上查找X行Y列的对应值,并进行替换。
(2) ShiftRows
假设State表中当前行为i(i [0,3]),ShiftRows操作则为将i行循环左移i个字节
(3) MixColumns
Rcon为一常量矩阵,MixColumns操作则为Rcon矩阵与State矩阵相乘
(4) AddRoundKey
State矩阵中元素与子密钥元素进行异或运算
4. 最后一轮加密
(1) SubBytes
(2) ShiftRows
(3) AddRoundKey