【问题标题】:AES key scheduleAES 密钥计划
【发布时间】:2013-09-21 12:50:29
【问题描述】:

在关于 AES 密钥调度的教程中,我看到密钥调度(旋转、rcon、s-box)的操作应用于一个 4 字节的字。你能解释一下这个字是从哪里来的吗?我明白我从 128 位长的密钥中提取它。密钥保存为 4x4 矩阵。那么我怎样才能获得用于密钥调度的单词?也许这是一个简单的问题,但我不明白。谢谢。

【问题讨论】:

  • 这些问题最好在 crypto.stackexchange.com 上提出(当然,如果那里还没有的话)。

标签: c encryption cryptography aes


【解决方案1】:

已解释 here (with some code)。它是“到目前为止”扩展键的最后 4 个字节。

  1. 您从 128 位(16 字节)密钥开始。扩展键的前 16 个字节就是那些字节。

  2. 1234563在键的开头),并将其附加到展开的键。
  3. 您获取扩展密钥的最后 4 个字节(您刚刚附加的内容),将其与 16 个字节“返回”(因此,第一次,字节 5 到 8)进行异或,并将结果附加到扩展键。

  4. 您将 3 再重复 2 次,每次使用扩展密钥的最后 4 个字节。

  5. 从 2 开始重复,直到获得所需的总展开长度。

总是如此,您使用的是最后附加到扩展键的 4 个字节。并且您在 16 字节“部分”中执行此操作,其中该部分的前 4 个字节使用(旋转,rcon,s-box)“初始化”。

the standard 的第 5.2 节也对此进行了解释,略有不同(并且在回答您的问题时可能会更清楚)。他们将其描述为总是取最后 4 个字节,并将它们与之前的 4 个字节 16 个字节加上,每 4 次执行 (rotate,rcon,s-box) 舞蹈。这更清楚地表明,上面第 2 步和第 3 步中的异或是“相同的”。

对于更长的键,你可以调整上面的一些常量(所以你可以做更长的“部分”)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-31
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    相关资源
    最近更新 更多