一、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