AES DES加密有啥区别啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AES DES加密有啥区别啊?相关的知识,希望对你有一定的参考价值。

AES和DES加密的区别:
1、密钥长度不同
AES 密钥长度可以是 128 位,192 位和 256 位。DES 密钥长度在 DES 中为 56 位。
2、轮数不同
AES 轮数取决于密钥长度:10 (128 位), 12 (192 位) 或 14 (256 位)。DES 涉及 16 轮相同的操作。
3、原理不同
AES 结构基于置换排列网络。DES 结构基于 feistal 网络。
4、安全性不同
AES 比 DES 密码更安全,并且是事实上的世界标准。由于 DES 具有已知漏洞,因此很容易被破坏。 3DES (三重 DES) 是 DES 的一种变体,它比通常的 DES 安全。
5、回合不同
AES 中的回合为:字节替换,移位行,混合列和键添加。DES 中的回合为:扩展,带回合键的 XOR 操作,替换和置换。
6、加密不同
AES 可以加密 128 位纯文本。DES 可以加密 64 位纯文本。

参考技术A AES安全性高。DES基本算的上是过时的产品了。
楼主给点奖励啊。我们一点积极性都没有……本回答被提问者采纳
参考技术B 主要结构方面区别,DES使用Feistel网络,在进行加密步骤之前将块分成两半。另一方面,AES使用排列替换,它涉及一系列替换和排列步骤来创建加密块。
所以AES比DES密码更安全,是事实上的世界标准。DES很容易被破解,因为它有已知的漏洞。
参考技术C 加密算法不一样.

图解DES3DES和AES加密算法

文章目录

一、DES

1. 加密和解密

DES是一种将64bit的明文加密成64bit的密文的对称加密算法。它的密钥长度是56bit。从规格上来讲,DES密钥长度是64bit,但是由于每隔7bit会设置一个用于校验检查的校验位,所以实质上密钥长度是56bit。

DES是以64bit的明文为一个单位来进行分组加密的,所以DES每次只能加密64bit的数据。如果需要加密很长的数据,就需要对DES加密进行迭代,而迭代的具体方式就称为模式ECBCBCCFBOFBCTR)。

2. DES的结构(Feistel网络)

DES的基本结构是由Horst Feistel设计的,因此也叫Feistel网络Feistel 结构 或者Feistel密码。很多密码算法中都用到这种结构。
在Feistel网络中,加密的各个步骤称之为,整个加密过程就是进行若干次轮的循环。DES 是一种16轮循环的Feistel网络。

上图表示Fesitel网络中的一轮,根据上图讲解一下Fesitel网络的具体结构。

    1. 上面两个方框表示本轮要加密的64bit 明文,输入的数据会被分为左右两个部分分别处理。
  1. 下面两个方框表示本轮输出的左侧(密文)和右侧(明文
  2. 中间的子密钥指的是本轮加密所使用的密钥,在Fesitel网络中,每一轮都需要不同的子密钥。由于子密钥只是在一轮中使用,所以它是局部密钥,因此才被称为子密钥
  3. 轮函数 的作用是根据 右侧子密钥 生成对左侧进行加密的bit序列,它是密码系统的核心。将轮函数输出的bit序列左侧进行异或运算,其结果就是加密后的左侧
  4. 输入的右侧将直接输出

如果只看上面,我们的右侧是没有被加密的,所以我们才需要用不同的子密钥进行多次的轮操作,并且每两轮直接左右需要对调。如下图:

上图是进行了3轮循环,DES加密是16轮。

二、3DES

1. 3DES加密

3DES也是三重DES,是为了增加DES的强度,将DES重复3次所得到的一种加密算法。


由于DES密钥长度实质上是56bit,此三重DES的密钥长度就是3*56=168 bit。
上图我们可以发现,三重DES并不是进行三次DES加密(加密 -> 加密 -> 加密),而是加密-解密-加密的过程。为什么加密算法中要加入解密算法呢?其目的是为了让3DES兼容普通的DES
三重DES中所有密钥都相同时,三重DES就等于普通的DES了。因为前两次加密-解密得到的就是最初的明文,然后在进行一次DES加密,就相当于只做了一次DES加密。因此以前用DES加密的密文,也能用3DES来进行解密。

如果密钥1和密钥3相同,密钥2使用不同的密钥,这种三重DES就称为 DES_EDE2,如下图:

2. 3DES解密

三重DES解密过程和加密过程正好相反,以密钥3-密钥2-密钥1的顺序执行解密-加密-解密的操作

三、AES

AES也是分段加密的,它是取代DES而成为新标准的一种对称密码算法。

1. AES最终候选算法和算法确定

AES最终候选算法名单

名称提交者
MARSIBM公司
RC6RSA公司
RijndaelDaemen、Rijmen
SerpentAnderson、Biham、Knudsen
TwofishCoumterpane公司

最终Rijndael,被NIST选定为AES标准

2. Rijndael

2.1 什么是Rijndael

Rijndael的分组长度密钥长度可以分别以32bit为单位在128bit~256bit范围内进行选择,不过在AES的规格中,分组长度固定为128bit,密钥长度只有128、192和256bit 三种。

2.2 Rijndael的加密和解密

DES一样,Rijndael算法也是由多个构成,其中每一轮分别为SubBytes(逐字节替换)ShiftRows(平移行)MixColumns(混合列)AddRoundKey(与轮密钥异或) 共4个步骤。

Rijndael输入分组为128bit,也就是16字节。输入的明文和密钥都是由16个字节组成的数据,它是按照字节的先后顺序从上到下、从左到右进行排列的。

然后对输入的16个字节逐个进行SubBytes处理。所谓SubBytes,就是以每个字节的值(0~255的任意值)为索引,从一张拥有256个值的替换表(S-Box)中查找出对应值的处理(注意:S-Box表是通过某种方法计算出来的)。简单说就是将一个1字节的值替换成另一个1字节的值。如下图所示为4x4=16字节的数据中通过S-Box替换1字节的情形。

SubBytes之后需要进行ShiftRows处理。这一步是将以4字节为单位的行按照一定的规则向左平移。且每行平移的字节数是不同的。如下图:

ShiftRows之后需要进行MixColumns处理。混合列变换是通过矩阵相乘来实现的,经行移位后的状态矩阵与固定的矩阵相乘,得到混淆后的状态矩阵,如下图:

最后将MixColumns输出的与轮密钥进行异或,即进行AddRoundKey 处理。如下图:

通过上面的结构我们可以知道AES一轮加密的过程,经过一轮已经感觉很复杂了。而完整的AES加密需要经过多轮,密钥长度每增加64位,算法的循环次数就增加2轮,128位循环10轮、192位循环12轮、256位循环14轮。

3. AES密钥生成

上面讲了明文加密过程,现在讲一下AES密钥生成过程.

128位密钥也是用字节为单位的矩阵表示,矩阵的每一列被称为1个32位比特字。通过密钥编排函数该密钥矩阵被扩展成一个44个字组成的序列W[0],W[1], … W[42],W[43],该序列的前4个元素W[0],W[1],W[2],W[3]是原始密钥,用于加密运算中的初始轮AddRoundKey。后面40个字分为10组,每组4个字(128比特)分别用于10轮加密运算中的AddRoundKey,如下图所示:

图片来源:密码学基础:AES加密算法

4. AES算法流程图


AES解密过程就是一个逆过程,这里就不细讲了。

参考博客:The Design of Rijndael密码学基础:AES加密算法AES加密算法的详细介绍与实现

参考书籍:《图解加解密技术》

以上是关于AES DES加密有啥区别啊?的主要内容,如果未能解决你的问题,请参考以下文章

aes des 哪个实现简单

图解DES3DES和AES加密算法

[转] AES,SHA1,DES,RSA,MD5区别

图解DES3DES和AES加密算法

图解DES3DES和AES加密算法

AES,SHA1,DES,RSA,MD5区别[转]