AES加密算法原理简述

AES为迭代型密码;明文长度固定128bit=16Byte,轮数依赖于密钥长度。密钥为128、192、256bit时,轮数分别为:10、12、14,本文以密钥长度为128bit为例。

整体过程:

AES加密算法原理简述_第1张图片

 明文16Byte按矩阵顺序填充(数据为16进制),初始密钥128bit(16Byte)以相同方式填充填充。

明文矩阵p

p00

p01

p02

p03

p04

p05

p06

p07

p08

p09

p10

p11

p12

p13

p14

p15

初始密钥k

k00

k01

k02

k03

k04

k05

k06

k07

k08

k09

k10

k11

k12

k13

k14

k15

初始变换

将明文矩阵和初始密钥异或得初始变换(轮密钥加)。

9轮循环运算

1字节代换

将初始变换后的矩阵通过S盒(S-Box)形成一个字节到另一个字节的映射。

如若p[00]=19H,S-Box中1行9列对应元素为d4,则p[00]=d4H,重复此操作得到新矩阵 

AES加密算法原理简述_第2张图片

AES加密算法原理简述_第3张图片

2行移位

将新矩阵的第0行不变,第1行左移1位,第2行左移2位,第3行左移3位。

AES加密算法原理简述_第4张图片

3列混合

将最新矩阵左乘一个常矩阵(其运算中加法和乘法都是定义在GF(2^8)上的加法和乘法)

AES加密算法原理简述_第5张图片

4轮密钥加

最新矩阵与子密钥矩阵异或

AES加密算法原理简述_第6张图片

 第10轮循环

无列混合步骤:

1、字节代换

2、行移位

3、轮密钥加

第10轮循环结束后的矩阵即密文矩阵。

密钥扩展

即将原本4行4列的初始密钥矩阵扩展成4行(4+40)列矩阵(再增加10个密钥矩阵)

密钥扩展

设列数依次为W0,W1...Wi...W43

如果i不是4的倍数,那么第i列由如下等式确定:W[i]=W[i-4]⨁W[i-1]

如果i是4的倍数,那么第i列由如下等式确定:W[i]=W[i-4]⨁T(W[i-1])

1、当i不是4的倍数时:

AES加密算法原理简述_第7张图片

直接将W[i-4]与W[i-1]异或即可得到新密钥列W[i]。

2、当i是4的倍数时:

W[i]=W[i-4]⨁T(W[i-1])  其中T函数包含1字循环、2字节代换、3轮常量异或。

a字循环:将1个字中的4个字节循环左移1个字节。

AES加密算法原理简述_第8张图片

 b字节代换:对字循环的结果用S盒字节代换。

AES加密算法原理简述_第9张图片

 c轮常量异或:将前两步的结果同轮常量Rcon[j]进⾏异或,其中j表示轮数

AES加密算法原理简述_第10张图片

最后将得到的结果T(W[i-1])与W[i-4]异或得到新密钥列W[i]。

你可能感兴趣的:(安全)