ECB模式下基于AEC的加密解密

  1. ECB模式

ECB模式全称是Electronic CodeBook模式,在ECB模式中,将明文分组加密之后的结果将直接成为密文分组。使用ECB模式加密时,相同的明文分组会被转换为相同的密文分组,我们可以将其理解为是一个巨大的“明文分组->密文分组”的对应表,因此ECB模式也称为电子密码本模式。当最后一个明文分组的内容小于分组长度时,需要用一些特定的数据进行填充。本实验使用‘0’进行填充。ECB模式中,明文分组与密文分组是一一对应的关系,因此,如果明文中存在多个相同的明文分组,则这些明文分组最终都将被转换为相同的密文分组。这样一来,只要观察一下密文,就可以知道明文存在怎样的重复组合,并可以以此为线索来破译密码,因此ECB模式是存在一定风险的。

  1. AES

2.1算法简介

AES算法全称Advanced Encryption Standard,又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

AES支持三种长度的密钥:128位,192位,256位。

2.2 AES算法原理

AES中没有使用Feistel网络,其结构称为SPN结构。和DES相同,AES也由多个轮组成,其中每个轮分为SubBytes、ShiftRows、MixColumns、AddRoundKey 4个步骤,即:字节代替、行移位、列混淆和轮密钥加。根据密钥长度不同,所需轮数也不同,128位、192位、256位密钥,分别需要10轮、12轮和14轮。第1轮之前有一次AddRoundKey,即轮密钥加,可以视为第0轮;之后1N-1轮,执行SubBytes、ShiftRows、MixColumns、AddRoundKey;最后一轮仅包括:SubBytes、MixColumns、AddRoundKey。

2.3算法过程

AES加密包括:初始轮、普通轮、最终轮三个部分。

除去初始轮,各种密钥长度对应的轮数如下:

AES128 : 10AES192 : 12AES256 : 14轮。

图1、AES加密过程

2.3.1字节代换

所谓字节替代,就是把明文块的每一个字节都替代成另外一个字节。依据一个被称为S盒(Subtitution Box)的16X16大小的二维常量数组。

图2、s_box

2.3.2行位移

对于4*4的矩阵,操作为:
第0行:保持不动;
第1行:循环左移1个字节;
第2行:循环左移2个字节;
第3行:循环左移3个字节。
解密过程变为循环右移,每行移动字节数与加密过程相同,下图为列位移示意图。

图3、行位移示意图

2.3.3列混淆

列混合变换是通过矩阵相乘来实现的,经行移位后的状态矩阵与固定的矩阵相乘,得到混淆后的状态矩阵,如下图的公式所示:


图4、列混淆


2.3.4轮密钥加

轮密钥加是将128位轮密钥Ki同状态矩阵中的数据进行逐位异或操作,如下图所示。其中,密钥Ki中每个字W[4i],W[4i+1],W[4i+2],W[4i+3]为32位比特字,包含4个字节,他们的生成算法下面在下面介绍。轮密钥加过程可以看成是字逐位异或的结果,也可以看成字节级别或者位级别的操作。也就是说,可以看成S0 S1 S2 S3 组成的32位字与W[4i]的异或运算。 

图5、列混淆

2.3.5密钥扩展

这个4*4矩阵的每一列的4个字节组成一个字,矩阵4列的4个字依次命名为W[0]、W[1]、W[2]和W[3],它们构成一个以字为单位的数组W。例如,设密钥K为”abcdefghijklmnop”,则K0 = ‘a’,K1 = ‘b’, K2 = ‘c’,K3 = ‘d’,W[0] = “abcd。 
接着,对W数组扩充40个新列,构成总共44列的扩展密钥数组。新列以如下的递归方式产生: 
1.如果i不是4的倍数,那么第i列由如下等式确定: 
W[i]=W[i-4]W[i-1] 
2.如果i是4的倍数,那么第i列由如下等式确定: 
W[i]=W[i-4]T(W[i-1]) 
其中,T是一个有点复杂的函数。 
函数T由3部分组成:字循环、字节代换和轮常量异或,这3部分的作用分别如下。 
a.字循环:将1个字中的4个字节循环左移1个字节。即将输入字[b0, b1, b2, b3]变换成[b1,b2,b3,b0]。 
b.字节代换:对字循环的结果使用S盒进行字节代换。 
c.轮常量异或:将前两步的结果同轮常量Rcon[j]进行异或,其中j表示轮数。 

  1. 设计思路

3.1设计流程图

图6、系统流程图

3.2加密流程


图7、加密流程

3.3解密流程

图8、解密流程

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

We尼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值