之前介绍了DES算法的原理和实现过程,现在介绍一下3DES的原理和实现过程。
DES算法的密钥长度为64位(实际有效长度为56位,因为每隔8位中有1位为校验位,使用的是奇偶校验法)。
其实3DES就是DES的升级版,所利用的技术原理是一样的。
3DES原理: 其实就是对明文进行三次DES算法运算,主要是通过增加DES密钥的长度来使破解更难。
下图为3DES算法的加密和解密过程:
3DES算法使用的密钥有效长度为112位,虽然进行了三次DES算法运算,但是只使用了两种不同密钥(由于效率问题),一种密钥的有效长度为56位,两种就为56*2=112位,其中密钥K1=K3。
加密过程: 第一次为明文M与密钥K1进行DES 加密 得到的输出M’,第二次为第一次的输出M’与密钥K2进行DES 解密 得到的输出M’’,第三次为第二次的输出M’'与密钥K3进行DES 加密 最终得到密文C;
解密过程: 第一次为密文C与密钥K3进行DES 解密 得到的输出M’’,第二次为第一次的输出M’‘与密钥K2进行DES 加密 得到的输出M’,第三次为第二次的输出M’与密钥K3进行DES 解密 最终得到明文M;
可以实现K1、K2、K3都不相等,这样安全性会更高,但是效率会降低。
如果K1=K2或者K2=K3,那么就相当于使用了一个56位的密钥单DES。
怎么理解这句话呢?
我们知道DES的基本原理是:明文M两次与密钥K进行异或运算就能得出它本身,看下图式子,⊕表示异或运算。
例如:明文M,密钥K
则在加密过程中:密文C=M⊕K;
解密过程中:明文M=C⊕K;
即M=M⊕K⊕K。
那么如果K1=K2,那么不就相当于对明文M进行加密,再进行解密,那得到的不就还是原来的明文M吗?整个过程不就相当于对明文M加密了一次(因为前两次进行了抵消,相当于没有进行操作),3DES解密过程同理。
若K2=K3道理与K1=K2相同,故不做过多解释。
3DES加密算法特点:
**相对于DES来说,由于密钥长度的增加,安全性更高,还可以实现4DES算法等等;
**但是由于以DES为基本设计出来的,效率至少低于DES算法的1/3,所以处理速度并不高。
后面又出现了AES算法,相比于3DES算法,安全性更高,速度更快,后面会介绍。