密码编码学与网络安全—原理与实践(第八版)第六章 AES加密

简介

             AES(Advanced Encryption Standard)高级加密标准,旨在取代DES加密标准,本文介绍aes128的加密流程,aes128,192,256在加密过程中使用到的s盒,矩阵,轮密钥常量通常是固定的。

工作流程图

        首先将明文分割为128位的明文分组,把明文序列变形,按照从左到右,从上到下的顺序进行排列。第一列从上到下排满四个,然后排第二列,形成4×4的矩阵,每个位置都是一个字节。16字节的密钥也是这样排列,24字节和32字节排成6列及8列。

明文或者密钥排列方式

初始变换

        将变形过的明文分组与密钥分组进行异或运算(XOR),初始变换后的分组参与10轮轮函数(aes192,aes256分别进行12轮,14轮轮函数)。注意,前n-1次的轮函数变换相同,第n次不同。

轮函数

前九轮

 字节代替

        矩阵中每个元素,按照前四位为行,后四位为列的置换原则,找到s盒中的唯一元素。例如下图中的第一个元素EA,代表E行A列,对应元素为87。

字节代替

s盒

 

行位移

        矩阵中第一行元素左移0个字节,第二行左移1个,第三行左移2个,第四行左移3个。

行位移

列混淆

        按照矩阵乘法规则,左乘一个给定的矩阵。

列混淆操作

        该矩阵是给定的,其中

        ×01代表元素本身

        ×02代表将二进制数左移一位,同时如果元素最左侧为1,要XOR一个二进制数0001 1011

        ×03代表(01+02),把02的操作结果和其本身进行XOR运算。

轮密钥加

        与每轮的密钥进行对应位置的XOR运算,得到的矩阵参与下一轮运算。

第十轮

        与前九轮唯一的区别是没有列混淆,其余操作一样。

密钥扩展

        密钥变换成矩阵的过程与明文分组一样,成为一个4列的矩阵参与初始变换,下面对密钥进行扩展,设要扩展的是第i列元素Wi。

i mod 4 ≠0

        Wi=Wi-4 XOR Wi-1

i mod 4 =0

        当i为4的倍数,即第四列,第八列等,Wi =Wi-4 XOR T(Wi-1 )。T()函数首先将第i-1列进行字循环,即将该列的元素上移一格,然后按照s盒的字节代替规则进行字节代替,最后跟一个给定的轮常量进行XOR操作,将结果与Wi-4进行XOR运算得到Wi。

轮常量

        aes128最终将密钥扩展成44列的密钥,每轮轮函数按照顺序使用4列,加上初始变换时使用的4列原始密钥,共44列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值