173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

aes加密解密算法分析(aes加密算法原理及实现)

keros@mark 2022-11-11 资讯中心

本篇文章给大家谈谈AES加密解密算法分析,以及aes加密算法原理及实现对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Advanced Encryption Standard(AES) 加密算法简介

AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。美国国家标准与技术研究所(NIST)在2002年5月26日建立了新的高级数据加密标准(AES)规范。AES是一个新的可以用于保护电子数据的加密算法。

1998年National Institute of Standards and Technology(NIST)开始AES第一轮分析、测试和征集,共产生了15个候选算法。其中包括CAST-256, CRYPTON, DEAL, DFC, E2, FROG, HPC, LOKI97, MAGENTA, MARS,RC6, Rijndael, SAFER+, Serpent, Twofish。 其中五个候选算法进入第二轮: MARS, RC6, Rijndael, Serpent, andTwofish. 1999年3月完成了第二轮AES2的分析、测试,最终确认Rijndael算法获得胜利。NIST于2002年5月26日制定了新的高级加密标准(AES)规范。

AES是典型的对称加密算法,应用广泛。数据发信方将明文和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。其优点是对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,双方都使用同样钥匙,安全性得不到保证。

在此扯一下题外话,不对称加密算法,比如著名的RSA算法,使用两把完全不同但又是完全匹配的一对钥匙----公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且加密者知道收信方的公钥,只有解密者才是唯一知道自己私钥的人。

AES算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES使用几种不同的方法来执行排列和置换运算。AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。与公共密钥加密使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。密码学简介据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。

AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“state”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:

1.AddRoundKey — 矩阵中的每一个字节都与该次round key做XOR运算;每个子密钥由密钥生成方案产生。

2.SubBytes — 通过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。

3.ShiftRows — 将矩阵中的每个横列进行循环式移位。

4.MixColumns — 为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每内联的四个字节。

aes的解密算法和加密算法有什么不同

AES加密中的字节代换 行移位和列混淆在解密过程中全部被逆字节代换 逆行移位和逆列混淆所代替,逆字节代换用逆S盒 逆行移位向右移等等 即 AES的解密运算过程是加密运算过程的逆过程。

aes加密算法原理

AES是分组密钥,算法输入128位数据,密钥长度也是128位。用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表1所列)。每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与。由于外部输入的加密密钥K长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密和解密密钥。

1.1圈变化

AES每一个圈变换由以下三个层组成:

非线性层——进行Subbyte变换;

线行混合层——进行ShiftRow和MixColumn运算;

密钥加层——进行AddRoundKey运算。

① Subbyte变换是作用在状态中每个字节上的一种非线性字节转换,可以通过计算出来的S盒进行映射。

② ShiftRow是一个字节换位。它将状态中的行按照不同的偏移量进行循环移位,而这个偏移量也是根据Nb的不同而选择的[3]。

③ 在MixColumn变换中,把状态中的每一列看作GF(28)上的多项式a(x)与固定多项式c(x)相乘的结果。 b(x)=c(x)*a(x)的系数这样计算:

*运算不是普通的乘法运算,而是特殊的运算,即 b(x)=c(x)·a(x)(mod x4+1) 对于这个运算 b0=02。a0+03。a1+a2+a3 令xtime(a0)=02。a0

其中,符号“。”表示模一个八次不可约多项式的同余乘法[3]。

对于逆变化,其矩阵C要改变成相应的D,即b(x)=d(x)*a(x)。

④ 密钥加层运算(addround)是将圈密钥状态中的对应字节按位“异或”。

⑤ 根据线性变化的性质[1],解密运算是加密变化的逆变化。

什么是AES对称加密

AES加密标准又称为高级加密标准Rijndael加密法,是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。AES的基本要求是,采用对称分组密码体制,密钥长度可以为128、192或256位,分组长度128位,算法应易在各种硬件和软件上实现。1998年NIST开始AES第一轮分析、测试和征集,共产生了15个候选算法

什么是AES算法?

1997年1月2日,美国国家标准和技术研究院(National Institute of Standard and Technology,NIST)宣布征集一个新的对称密钥分组密码算法作为新的加密标准,以取代即将过期的DES。新的算法被命名为高级加密标准(Advanced)。1997年9月12日发布了征集算法的正式公告,要求AES具有128位分组长度,支持128、192和256位的密钥长度。比三重DES有效,至少要与三重DES一样安全,而且要求AES能在全世界范围内免费得到。

1998年8月20日,NIST宣布接受15个算法为AES的候选算法,并提交全世界的密码学界协助分析这些算法。1999年8月,确定了5个候选决赛算法,分别是MARS、RC6、Rijndael、Serpent和Twofish。经过对决赛算法的进一步分析,2000年10月NIST决定将Rijndael作为AES,并于2002年5月26日制定了AES的规范。

Rijndael是由比利时的两位密码学家Daemen和Rijment共同设计的。Rijndael算法是一个迭代型分组密码,其分组长度和密钥长度都可变,各自可以为128比特、192比特和256比特。Rijndael对明文以字节为单位进行处理。以128位的分组、128位密钥的情况为例,首先将明文按字节分成列组,将明文的前4个字节组成一列,接下来的4个字节组成第二列,后面的字节依次组成第三列和第四列,这样就组成了一个4×4的矩阵,如图所示。

这样AES输入的16个字节排成了一个二维数组,称之为状态矩阵。AES的加密和解密变换都是基于状态数组来处理的,在中间结果上的不同变换操作称为状态。AES的状态矩阵的列数Nb等于分组的长度除以32,矩阵中的每个元素是一个8位字节。

同样,密钥也可以表示成一个4×Nk的矩阵,Nk等于密钥的长度除以32,当密钥的长度为128位时N=4,如图所示。

为表述简单,我们只讨论密钥长度为128比特、分组长度为128比特时的情形,对于其他分组长度和密钥长度的类型,AES的工作原理是相同的。

AES的基本变换单位是“轮”,加解密过程是由轮变换多次迭代而成。当分组长度和密钥长度均为128比特时,轮数为Nr=10。我们将AES中的轮变换记为Round(State, RoundKey),State表示消息的状态矩阵;RoundKey表示轮密钥矩阵,一轮的完成将改变State矩阵中的元素,称之为改变它的状态。对于加密来说,输入到第一轮中的State就是明文消息矩阵,最后一轮输出的State就是对应的密文消息矩阵。

AES的(除最后一轮外)轮变换由四个不同的变换组成,这些变换我们称之为内部轮函数,AES的轮可表示成如下形式:

Round(State, RoundKey){

SubBytes(State);

ShiftRows(State);

MixColumns(State);

AddRoundKey(State, RoundKey);}

其中,ByteSub(State)称为字节代替变换、ShiftRow(State)称为行移位变换、MixColumns(State)称为列混合变换,以及AddRoundKey(State, RoundKey)称为与子密钥异或。

最后一轮略微不同,将其记作FinalRoundKey(State, RoundKey),相当于前面的Round(State, RoundKey)去掉MixColumns(State)。

AES的算法执行过程如图下图所示,步骤如下:

给定明文M,将State初始化为M,并进行AddRoundKey(State, RoundKey),将RoundKey与State进行异或运算。

对于前Nr–1轮中的每一轮,分别执行Round(State, RoundKey)过程。

执行最后一轮FinalRoundKey(State, RoundKey)过程,即只执行SubBytes(State)、ShiftRows(State)、AddRoundKey(State, RoundKey)三个操作。

前面已知,AES的轮函数分4层(或称为内部轮函数):ByteSub(State)字节代替变换、ShiftRows(State)行移位变换、MixColumns(State)列混合变换以及AddRoundKey(State, RoundKey)与子密钥异或。

这样就完成了AES算法。(本文为原创,转载需向我请求权限,谢谢~)

AES加密算法原理

AES是分组密钥,算法输入128位数据,密钥长度也是128位。用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表1所列)。每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与。由于外部输入的加密密钥K长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密和解密密钥。

1.1圈变化

AES每一个圈变换由以下三个层组成:

非线性层——进行Subbyte变换;

线行混合层——进行ShiftRow和MixColumn运算;

密钥加层——进行AddRoundKey运算。

① Subbyte变换是作用在状态中每个字节上的一种非线性字节转换,可以通过计算出来的S盒进行映射。

② ShiftRow是一个字节换位。它将状态中的行按照不同的偏移量进行循环移位,而这个偏移量也是根据Nb的不同而选择的[3]。

③ 在MixColumn变换中,把状态中的每一列看作GF(28)上的多项式a(x)与固定多项式c(x)相乘的结果。 b(x)=c(x)*a(x)的系数这样计算:

*运算不是普通的乘法运算,而是特殊的运算,即 b(x)=c(x)·a(x)(mod x4+1) 对于这个运算 b0=02。a0+03。a1+a2+a3 令xtime(a0)=02。a0

其中,符号“。”表示模一个八次不可约多项式的同余乘法[3]。

对于逆变化,其矩阵C要改变成相应的D,即b(x)=d(x)*a(x)。

④ 密钥加层运算(addround)是将圈密钥状态中的对应字节按位“异或”。

⑤ 根据线性变化的性质[1],解密运算是加密变化的逆变化。

AES加密解密算法分析的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于aes加密算法原理及实现、AES加密解密算法分析的信息别忘了在本站进行查找喔。

本文标签:AES加密解密算法分析

产品列表
产品封装
友情链接