在关于 AES 密钥调度的教程中,我看到密钥调度(旋转、rcon、s-box)的操作应用于一个 4 字节的单词。你能解释一下这个词是从哪里来的吗?我知道我是从128 位长的密钥。密钥保存为 4x4 矩阵。那么我怎样才能获得用于密钥调度的单词?也许这是一个简单的问题,但我不明白。谢谢。
1 回答
这里有解释(带有一些代码)。这是“到目前为止”扩展密钥的最后 4 个字节。
您从 128 位(16 字节)密钥开始。扩展密钥的前 16 个字节就是那些字节。
你拿最后 4 个字节,做 (rotate,rcon,s-box) 舞蹈,再得到 4 个字节,你用 16 个字节之前的 4 个字节异或(所以,第一次,在密钥的开头),并将其附加到扩展键。
您获取扩展密钥的最后 4 个字节(您刚刚附加的内容),将其与 16 个字节“返回”字节(因此,第一次,字节 5 到 8)进行异或,并将结果附加到扩展密钥。
您重复 3 次 2 次,每次使用扩展密钥的最后 4 个字节。
您从 2 开始重复,直到获得所需的总扩展长度。
所以总是,您使用的是最后附加到扩展键的 4 个字节。并且您在 16 字节“部分”中执行此操作,其中该部分的前 4 个字节使用 (rotate,rcon,s-box) “初始化”。
它在标准的第 5.2 节中也略有不同(并且在回答您的问题时可能会更清楚)。他们将其描述为总是取最后 4 个字节,并将它们与之前的 4 个字节 16 个字节加上,每 4 次进行 (rotate,rcon,s-box) 舞蹈。这更清楚地表明上述步骤 2 和 3 中的异或是“相同的”。
对于更长的键,您可以调整上面的一些常量(因此您可以执行更长的“部分”)。