AES加密算法原理简述

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

整体过程:

 明文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,重复此操作得到新矩阵 

S-Box

2行移位

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

行移位

3列混合

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

4轮密钥加

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

 第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的倍数时:

直接将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个字节。

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值