密码之DES

转:https://www.cnblogs.com/xinzhigu94/p/5420728.html

先说一下什么是对称密码算法,什么是对称密码算法呢?对称密码算法是指有了加密密钥就可以推算出解密密钥,有了解密密钥就可以推算出加密密钥的的算法。

那DES是什么呢?DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。需要注意的是,在某些文献中,作为算法的DES称为数据加密算法(Data Encryption Algorithm,DSA),已与作为标准的DES区分开来。

DES设计中使用了分组密码设计的两个原则:混淆(confusion)和扩散(diffusion),其目的是抗击敌手对密码系统的统计分析。混淆是使密文的统计特性与密钥的取值之间的关系尽可能复杂化,以使密钥和明文以及密文之间的依赖性对密码分析者来说是无法利用的。扩散的作用就是将每一位明文的影响尽可能迅速地作用到较多的输出密文位中,以便在大量的密文中消除明文的统计结构,并且使每一位密钥的影响尽可能迅速地扩展到较多的密文位中,以防对密钥进行逐段破译。

DES以64位分组长度对数据加密,其中包括了8位奇偶校验位,所以实际的密文长度为56位,其过程如下:

表示明文,用

表示密文,用

表示密钥,加密函数为

,解密函数为

,则

DES

的加密变换为:

用M表示明文,用C表示密文,用K表示密钥,加密函数为E,解密函数为D,则DES的加密变换为:;解密变换为:。

;解密变换为:

用M表示明文,用C表示密文,用K表示密钥,加密函数为E,解密函数为D,则DES的加密变换为:;解密变换为:。

3DES是针对DES算法密钥过短、存在安全性的问题而改进的一个措施,被称为“3DES”。其实只是通过简单的执行3次DES来达到增加密钥长度和安全而已。其过程如下图所示:

在上图中3DES算法在对明文M进行加密时,采用了三次加密过程,其中第一次和第三次是采用DES的加密算法,第二次采用的则是解密算法,从而得到最终的密文C。这种加密过程为“加密-解密-加密”,所以又称为EDE(Encrypt-Decrypt-Encrypt)方案。其具体加密与解密过程为

加密过程:明文

经过第一次加密得到的密文

加密过程:明文M经过第一次加密得到的密文,第二次采用的是解密算法,所以此时得到的密文为,第三次采用加密算法,其密文文为,由此得到最终密文,此时将依次将替换得到最终3DES加密算法;

,第二次采用的是解密算法,所以此时得到的密文为

加密过程:明文M经过第一次加密得到的密文,第二次采用的是解密算法,所以此时得到的密文为,第三次采用加密算法,其密文文为,由此得到最终密文,此时将依次将替换得到最终3DES加密算法;

,第三次采用加密算法,其密文文为

加密过程:明文M经过第一次加密得到的密文,第二次采用的是解密算法,所以此时得到的密文为,第三次采用加密算法,其密文文为,由此得到最终密文,此时将依次将替换得到最终3DES加密算法;

,由此得到最终密文,此时将依次将

加密过程:明文M经过第一次加密得到的密文,第二次采用的是解密算法,所以此时得到的密文为,第三次采用加密算法,其密文文为,由此得到最终密文,此时将依次将替换得到最终3DES加密算法;

替换得到最终

3DES

加密算法

加密过程:明文M经过第一次加密得到的密文,第二次采用的是解密算法,所以此时得到的密文为,第三次采用加密算法,其密文文为,由此得到最终密文,此时将依次将替换得到最终3DES加密算法;

与此解密过程为最终密文

要先进行解密,其解密算法为

得到第一个明文

与此解密过程为最终密文C要先进行解密,其解密算法为得到第一个明文,接着在进行第二次解密,只不过此时要用的是原先解密的相对面其加密算法得到,最后解密第二次的明文得到最终明文,此时依次替换则可得到最终明文。

,接着在进行第二次解密,只不过此时要用的是原先解密的相对面其加密算法得到

与此解密过程为最终密文C要先进行解密,其解密算法为得到第一个明文,接着在进行第二次解密,只不过此时要用的是原先解密的相对面其加密算法得到,最后解密第二次的明文得到最终明文,此时依次替换则可得到最终明文。

,最后解密第二次的明文得到最终明文

与此解密过程为最终密文C要先进行解密,其解密算法为得到第一个明文,接着在进行第二次解密,只不过此时要用的是原先解密的相对面其加密算法得到,最后解密第二次的明文得到最终明文,此时依次替换则可得到最终明文。

,此时依次替换

与此解密过程为最终密文C要先进行解密,其解密算法为得到第一个明文,接着在进行第二次解密,只不过此时要用的是原先解密的相对面其加密算法得到,最后解密第二次的明文得到最终明文,此时依次替换则可得到最终明文。

则可得到最终明文

与此解密过程为最终密文C要先进行解密,其解密算法为得到第一个明文,接着在进行第二次解密,只不过此时要用的是原先解密的相对面其加密算法得到,最后解密第二次的明文得到最终明文,此时依次替换则可得到最终明文。

具体的对于DES加密在C#与Java中的应用可以参考下方链接的博主哦:http://www.cnblogs.com/haoxinyue/archive/2012/04/26/2470661.html

你可能感兴趣的:(密码之DES)