下图是DES加密的大致流程,DES是一种64位密钥加密64位明文的加密算法,但是64位密钥中每隔8位就是一位纠错位,所以真正有用的密钥的位数是56位。DES是一一种进行多次加密的对称加密算法,总共要进行16轮的加密,所以我们总共需要16个子密钥,这个子密钥从原先得到的64位密钥中得来。
加密的流程简述
1、将64位明文打乱然后拆分成两个部分,每一个部分的位数是32位。
2、在第一轮的加密中右边的部分不做加密,而是将其当作一个材料和第一轮要使用的子密钥经过轮函数计算算出一个随机数,然后我们再使用该随机数与左边的部分进行异或运算,于是我们就得到了第一轮加密的结果:加密的左边部分和为加密的右边部分
3、在第二轮加密的时候,我们不加密左边的部分,将左边部分与第二轮要使用的子密钥作为材料放入轮函数进行计算得到一个随机数,将该随机数与右边部分进行异或运算,这样我们就得到了第二轮的结果。
4、后面加密的过程都是重复2,3步骤,直到这样反复加密到16轮就结束了。
解密的流程简述
1、将得到的密文分成两份,一份32位
2、因为我们在加密的过程中会得到16个子密钥,比如我们加密的时候是正序使用这些密钥的,比如密钥1到密钥16,那么我们解密的时候使用这些密钥就需要倒序使用,比如密钥16到密钥1,我们在解密的时候使用的流程和加密的时候一样,不过加密是从上到下的不断加密,我们从下都上不断地解密。
为什么这样可以解密?当我们拿到密文的时候,其实原理当一个二进制数X和另一个二进制数Z做异或得到第三个二进制数Y, 我们如果使用二进制Y再和二进制Z做异或那么就会得到二进制数X。
该方式加密的优点
不论以这种方式加密多少轮都不会影响最后的解密
无论轮函数多复杂都不会影响最后的解密
加密和解密都使用相同的方法
总结:
DES已经可以被很快速的破解,所以我们不应该将其视作一种日常生活中去使用的加密算法。但是它的加密算法是可以被其他的加密算法借鉴的。
3DES加密流程简述
3DES的加密流程是以DES的算法方式进行加密--解密--加密的流程,其中第一次的加密和第二次的加密不能使用相同的密钥,不然最后就相当于使用第三次的密钥加密了一次。
其中如果加密--解密--加密的过程中使用的密钥都是不同的,那么称该加密为3DES-EDE3,如果第一次加密和最后一次加密使用的密钥相同的话,那么称该加密为3DES-EDE2
3DES的解密流程简述
比如我用密钥1,2,3顺序去进行加密,那么我在解密的时候就是用密钥3,2,1的顺序去解密,内部解密的方式和DES解密的方式一样,不过需要使用三个密钥进行三次DES的解密。
总结:
3DES加解密速度慢,不作为推荐去使用的一种加密算法,如果将它的安全系数和DES的安全系数做一个比喻,那么DES的安全系数是low,3DES是medium。