新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 用AVR汇编语言实现AES及其优化

用AVR汇编语言实现AES及其优化

作者:时间:2012-03-28来源:网络收藏

25.gif

对于逆变化,其矩阵C要改变成相应的D,即b(x)=d(x)*a(x)。

④ 密钥加层运算(addround)是将圈密钥状态中的对应字节按位“异或”。

⑤ 根据线性变化的性质[1],解密运算是加密变化的逆变化。这里不再详细叙述。

1.2 轮变化

对不同的分组长度,其对应的轮变化次数是不同的,如表1所列。

表1 类型与基参数的关系
26.gif

1.3 密钥扩展

算法利用外部输入密钥K(密钥串的字数为Nk),通过密钥的扩展程序得到共计4(Nr+1)字的扩展密钥。它涉及如下三个模块:

  ① 位置变换(rotword)——把一个4字节的序列[A,B,C,D]变化成[B,C,D,A];

  ② S盒变换(subword)——对一个4字节进行S盒代替;

  ③ 变换Rcon[i]——Rcon[i]表示32位比特字[xi-1,00,00,00]。这里的x是(02),如
Rcon[1]=[01000000];Rcon[2]=[02000000];Rcon[3]=[04000000]……

扩展密钥的生成:扩展密钥的前Nk个字就是外部密钥K;以后的字W[[i]]等于它前一个字W[[i-1]]与前第Nk个字W[[i-Nk]]的“异或”,即W[[i]]=W[[i-1]]W[[i- Nk]]。但是若i为Nk的倍数,则W[i]=W[i-Nk]Subword(Rotword(W[[i-1]]))Rcon[i/Nk]。

程序执行的时候,主要调用以上几个子程序,具体如下:

  Keyexpansion:
    rcall rotwoed
    rcall subword
    rcall Rcon
    …
    的加密与解密流程如图1所示。



评论


相关推荐

技术专区

关闭