🥫🍞

AES 加密算法

2022-07-18

AES 加密算法

密钥扩展算法

步骤说明:

  1. 将密钥 key 按左图的格式,从上到下,从左到右排列,每一列 4 个字节,其中 $k_n$ 表示 1 个字节。

    AES 支持密钥长度为 16、24、32 字节,因此可能的列数是 4、6、8

  2. 将每一列的 4 字节从上到下拼接成 32 bit,记为 $W_t$

根据密钥长度不同,列数是 4、6、8,因此 $W$ 每一行的长度是 4、6、8

  1. 依次求解 $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 函数的流程如下:

  1. 将 $W_t$ 循环左移 8 bit(即 1 字节)
  2. 对每个字节做 S 盒置换
  3. 将每个字节与 32 bit 常量$(RC[t/4],0,0,0)$进行异或。

$RC$ 是一个一维数组,其所需长度随着 AES 算法密钥的长度变化,

参考

https://www.cnblogs.com/luop/p/4334160.html

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章