基础密码系统:对称与非对称加密技术解析
1. AES 密钥调度
1.1 AES 密钥长度与轮数
AES 支持 128、192 或 256 位的密钥,不同的密钥长度对应不同的轮数,具体如下表所示:
| 密钥长度(位) | 密钥长度(以 32 位字计) | 轮数(初始轮之后) |
| ---- | ---- | ---- |
| 128 | 4 | 10 |
| 192 | 6 | 12 |
| 256 | 8 | 14 |
每一轮需要一个由相应数量的 32 位字组成的轮密钥数组,再加上初始轮的一个,总共需要 $l_k(l_r + 1)$ 个轮密钥字。
1.2 128 位密钥的扩展
以 128 位密钥 $K$ 为例($l_k = 4$),秘密密钥 $K$ 构成扩展密钥 $E_0, \cdots, E_{4(l_r+1)-1}$ 的前四个 4 字节字 $E_0, E_1, E_2, E_3$,其余的字通过之前的字逐个生成。对于大多数索引 $i \geq 4$,$E_i$ 是 $E_{i-1}$ 和 $E_{i-4}$ 在 $Z_{32}^2$ 中的和(按位异或):
$E_i = E_{i-1} + E_{i-4}$
如果 $i$ 是 4 的倍数,则首先对 $E_{i-1}$ 应用一个变换:
1. 将 $E_{i-1}$ 的四个字节 $(a_3, a_2, a_1, a_0)$ 循环右移得到 $(a_0, a_3, a_2, a_1)$。
2. 对每个字节分别应用 SubBytes 变换。
3. 加上一个常量轮字 $c_{i/4}$
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



