图解DES3DES和AES加密算法
Posted wuzuchang2021
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图解DES3DES和AES加密算法相关的知识,希望对你有一定的参考价值。
一、DES
1. 加密和解密
DES是一种将64bit的明文加密成64bit的密文的对称加密算法。它的密钥长度是56bit。从规格上来讲,DES密钥长度是64bit,但是由于每隔7bit会设置一个用于校验检查的校验位,所以实质上密钥长度是56bit。
DES是以64bit的明文为一个单位来进行分组加密的,所以DES每次只能加密64bit的数据。如果需要加密很长的数据,就需要对DES加密进行迭代,而迭代的具体方式就称为模式(ECB、CBC、CFB、OFB、CTR)。
2. DES的结构(Feistel网络)
DES的基本结构是由Horst Feistel设计的,因此也叫Feistel网络、Feistel 结构 或者Feistel密码。很多密码算法中都用到这种结构。
在Feistel网络中,加密的各个步骤称之为轮,整个加密过程就是进行若干次轮的循环。DES 是一种16轮循环的Feistel网络。
上图表示Fesitel网络中的一轮,根据上图讲解一下Fesitel网络的具体结构。
-
- 上面两个方框表示本轮要加密的64bit 明文,输入的数据会被分为左右两个部分分别处理。
- 下面两个方框表示本轮输出的左侧(密文)和右侧(明文)
- 中间的子密钥指的是本轮加密所使用的密钥,在Fesitel网络中,每一轮都需要不同的子密钥。由于子密钥只是在一轮中使用,所以它是局部密钥,因此才被称为子密钥。
- 轮函数 的作用是根据 右侧 和 子密钥 生成对左侧进行加密的bit序列,它是密码系统的核心。将轮函数输出的bit序列与左侧进行异或运算,其结果就是加密后的左侧。
- 输入的右侧将直接输出
如果只看上面,我们的右侧是没有被加密的,所以我们才需要用不同的子密钥进行多次的轮操作,并且每两轮直接左右需要对调。如下图:
上图是进行了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而成为新标准的一种对称密码算法。、
参考书籍:《图解加解密技术》
以上是关于图解DES3DES和AES加密算法的主要内容,如果未能解决你的问题,请参考以下文章