DES全称为Data Encryption Standard,即数据加密标准,是一种使用秘钥加密的块算法。
DES算法入口参数:
DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作秘钥;Data为8个字节64位,是要被加密或解密的数据;Mode为DES的工作方式,有两种:加密或解密。
DES基本原则:
DES设计中使用了分组密码设计的两个原则:混淆和扩散,其目的是抗击敌手对密码系统的统计分析。混淆使密文的统计特性与秘钥的取值之间的关系尽可能复杂化,以是秘钥明文级密文之间的依赖性对密码分析者来说是无法利用的。扩散的作用就是将每一位明文的影响尽可能迅速地作用到较多的输出密文位中,以便在大量的密文中消除明文的统计结构,并且使每一位秘钥的影响尽可能迅速地扩展到较多的密文位中,以防对秘钥进行逐断破译。
算法步骤:
DES算法把64位的明文输入块变为64位的密文输出块,它所使用的秘钥也是64位(实际用到了56位,第8、16、24、32、40、48、56、64位是校验位,使得每个秘钥都有基数个1)。其算法主要分为两步:
1. 初始置换
其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则则为输入的第58位换到第1位,第50位换到第2位,...,以此类推,最后一位数原来的第7位。L0、R0则是置换位输出后的两部分,L0是输出的左32位,R0是右32位,例如:设置置换前的输入值为D1D2D3...D64,则经过初始置换后的结果为:L0=D58D50...D8;R0=D57D49...D7。
其置换规则见下表:
58,50,42,34,26,18,10,2, 60,52,44,36,28,20,12,4, 62,54,46,38,30,22,14,6, 64,56,48,40,32,24,16,8, 57,49,41,33,25,17,9 ,1, 59,51,43,35,27,19,11,3, 61,53,45,37,29,21,13,5, 63,55,47,39,31,23,15,7,
2. 逆置换
经过16次迭代运算后,得到L16、R16,将此最为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。此算法是对称加密算法体系中的代表,在计算机网络系统中广泛使用。
DES与3DES:
3DES是DES向AES过渡的加密算法,它使用3条56位的秘钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。
该方法使用两个秘钥,执行三次DES算法,加密的过程是:加密-解密-加密,解密的过程是:解密-加密-解密。
3DES加密过程为:C=Ek3(Ek2(Ek1(P)))
3DES解密过程为:P=Dk1(Dk2(Dk3(C)))
采用两个秘钥进行三重加密的好处有:
1. 两个秘钥合起来有效秘钥长度有112bit,可以满足商业应用的需要,若采用总长度为168bit的三个秘钥,会产生不必要的开销。
2. 加密时采用:加密-解密-加密,而不是采用加密-加密-加密的形式,这样有效的实现了与现有DES系统的向后兼容问题。因为大K1=K2时,三重DES的效果和原来的DES一样,有助于逐渐推广三重DES。
3. 三重DES具有足够的安全性,目前还没有关于攻破3DES的报道。