

(1) 将输入密钥直接复制到扩展密钥数组的前4个字中,得到w[0],w[1],w[2],w[3]。
(2) 然后每次用4个字填充扩展密钥数组w的余下部分,w[i]值依赖于w[i-1]和w[i-4],i ≥4。
(3) 当数组w下标不是4的倍数时, w[i]值为w[i-1]和w[i-4]的异或。
(4) 当数组w下标为4的倍数时,按照下面方法计算:
① 将一个字的四个字节循环左移一个字节,即将输入字[b0,b1,b2,b3]变为[b1, b2, b3, b0];
② 用S盒对输入字的每个字节进行字节代换;
③ 将步骤①和步骤②的结果再与轮常数Rcon[i]相异或
轮常数Rcon[i]是一个字,这个字的最右边三个字节总是0
与轮常数的一个字异或,其结果即是与该字最左边的字节相异或
每轮的轮常数均不同,其定义为Rcon[i] = (RC[i], {00}, {00}, {00}),其中RC[1] ={01},RC[i] = {02} ( RC[i-1]),用多项式表示为RC[i] = x ( RC[i-1]) = xi-1,i≥2
字节用16进制表示,同时理解为GF(28)上的元素
xi-1为GF(28)中的多项式x的i-1次方所对应的字节
考虑到x对应的字节为{02}, 轮常数也可以写为:
Rcon[i] = ((02) i-1, {00}, {00}, {00})
前10个轮常数RC[i]的值如表3.4所示,对应的Rcon[i] 如表3.5所示
| 各省软考办 | ||||||||||