AES 加密算法
密钥扩展算法
步骤说明:
将密钥 key 按左图的格式,从上到下,从左到右排列,每一列 4 个字节,其中 $k_n$ 表示 1 个字节。
AES 支持密钥长度为 16、24、32 字节,因此可能的列数是 4、6、8
将每一列的 4 字节从上到下拼接成 32 bit,记为 $W_t$
根据密钥长度不同,列数是 4、6、8,因此 $W$ 每一行的长度是 4、6、8
- 依次求解 $W_t$,$t$ 的范围是 $[4,43]$(因为已经得到 $[0,3]$ 的值),规则如下:
若 $t%4=0$,则:
$$w[t]=w[t-4]⊕g(w[t-1])$$
否则:
$$w[t]=w[t-4]⊕w[t-1];$$
g 函数的流程如下:
- 将 $W_t$ 循环左移 8 bit(即 1 字节)
- 对每个字节做 S 盒置换
- 将每个字节与 32 bit 常量$(RC[t/4],0,0,0)$进行异或。
$RC$ 是一个一维数组,其所需长度随着 AES 算法密钥的长度变化,
参考
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章