AES加密算法原理发布于:2012-09-12 14:54 文章来源:新浪博客 评论关闭
[导读] AES加密算法作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。AES设计有三个密钥长度:128,192,256位,相对而言,AES的128密钥比DES的56密钥强1021倍[2]。AES加密算法主要包括三个方面:轮变化、圈数和密钥...
AES加密算法作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。AES设计有三个密钥长度:128,192,256位,相对而言,AES的128密钥比DES的56密钥强1021倍[2]。AES加密算法主要包括三个方面:轮变化、圈数和密钥扩展。本文以128为例,介绍算法的基本原理;结合AVR汇编语言,实现高级数据加密算法AES。 一、圈变化 *运算不是普通的乘法运算,而是特殊的运算,即 b(x)=c(x)·a(x)(mod x4+1) 对于这个运算 b0=02。a0+03。a1+a2+a3 令xtime(a0)=02。a0 其中,符号“。”表示模一个八次不可约多项式的同余乘法[3]。 加密算法” width=”201″ height=”85″ /> 二、轮变化 对不同的分组长度,其对应的轮变化次数是不同的,如表1所列。 三、密钥扩展 AES算法利用外部输入密钥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]。 AES的加密与解密流程。 |
|