美文网首页
分组密码--DES算法

分组密码--DES算法

作者: reknow | 来源:发表于2017-07-18 15:35 被阅读0次

什么是DES算法

DES是一种对称密码,加密和解密用的都是同一个密钥,有效密钥长度为56位。DES是一个分组密码算法,分组长度为64位,即对数据进行加解密的单位是64位,明文和密文的长度相同。由于加密和解密用的是同一算法,所以有利于硬件和软件上的实现。注意上面说的56位是有效密钥长度,事实上我们用的是64位密钥,但是第8,16,24,32,40,56和64位是奇偶校验位

DES算法的概述

1.分组的加密算法

明文和密文为64位分组长度。

2.对称算法

加密和解密除密钥编排不同外,使用同一算法。

3.密钥长度

56位,但存在弱密钥,容易避开。

4.采用混乱和扩散的组合,每个组合先替代后置换,共16轮

5.只使用了标准的算术和逻辑运算,易于实现

6.现代密码学诞生的标志之一,揭开了商用密码研究的序幕

DES加密流程图

DES算法的实现

(一)初始置换(IP)。将明文块的位进行换位,其置换表示固定的。初始置换表为8*8的表格,第一位58表示该位置存放明文中的第58位字符。第1位字符已经变换到40位的位置。
  注意初始置换是固定公开的函数,因此没有密码的意义。作用不大,它们的作用在于打乱原来输入x的ASCII码字划分的关系。经过初始置换之后,64位明文分成了两组L和R,各32位。由于这种方法软件实现较为麻烦,所有很多软件实现都删去了初始置换。经过初始置换,64位的输入得到了两个32位的输出。

(二)16轮的轮函数F变换。轮函数F由3个部分组成:扩展置换(E盒),非线性代换(S盒)和线性置换(P盒)。

(1)E盒的作用是将32为扩展为48位,其扩展规则按下表进行。该表大小为6*8,去掉最左和最右两行,中间的四列包含了1-32的顺序。第1列和第6列分别是对第4和第1列的扩展。经过扩展置换,32位的输入得到了48位的输出。

(2)S盒的作用是进行非线性代换。S盒是DES中唯一的非线性部分,DES的安全强度主要取决于S盒的安全程度。S盒运算其实是一个查表运算。在E盒的扩展之后得到了48位的数据,将其和48位的子密钥进行异或运算,这是密钥参与运算的步骤。将其分成8个组,每组6个,送到8个S盒中去。每一个S盒都是一个6位输入4位输出的结构,也就是说,48位输入到8个S盒会得到4*8=32位的输出。6位输入到8位输出的映射关系如下表所示,其中,第一位和最后一位作为行号,第二位到第五位最为列号。例如,101100,则行号为10=2,列号为0110=6。查得(2,6)=2,化成二进制位0010。注意,8个S盒的映射关系各不相同。

(3)P盒的作用只是进行简单的位置置换,只是简单地把一位换成另一位,不进行扩展和压缩。经过P盒操作,32位的输入得到32位的输出。

轮函数F剩下的步骤通过轮函数的组成图可以清晰看出,这里不再详细介绍。主要就是进行异或操作。就这样对经过E盒拓展的64位数据进行16轮的变换。

(三)逆初始置换。如果进行初始置换,则必须进行逆初始置换,逆初始置换的实现和初始置换一样,只是置换表不同而已。

DES子密钥生成方法

DES的初始64位密钥通过置换选择PC-1得到有效的56位密钥。这56位分为2个28位数据C0和D0。每轮迭代中Ci-1和Di-1分别循环左移1位或2位,移位后的值作为下一轮的输入,同时也作为置换选择PC-2的输入,通过置换选择PC-2产生一个48位的输出,即为一个子密钥。64位密钥生成了16个48位的子密钥。

PC-1表(用于置换选择1)

PC-2表(用于置换选择2)

DES的核心技术

S盒设计准则

1.具有良好的非线性;
  2.每一行包括所有16种4位二进制;
  3.两个输入相差1比特时,输出相差2比特;
  4.如果两个输入刚好在中间两个比特上不同,则输出至少有输入至少有两个比特不同;
  5.如果两个输入前两位不同而最后两位相同,则输出一定不同。

P盒设计准则

1.每个S盒的4位输出影响下一轮6个不同的S盒,但是没有两位影响同一S盒;
  2.在第i轮S盒的4位输出中,2位将影响i+1轮中间位置,其余2位数将影响两端位;
  3.如个一个S盒的4位输出影响另一个S盒的中间的一位,则后一个的输出位不会影响前面一个S盒的中间位。

DES的解密算法

DES解密流程图

相关文章

  • Java分组密码算法DES

    Java分组密码算法DES 1实验内容 掌握分组密码算法DES方法,能用高级语言实现分组密码算法DES。DES算法...

  • 分组密码DES

    分组密码的原理 DES是分组密码,分组密码将消息进行等长分组,使用同一密钥对每个分组进行加密。 DES算法 DES...

  • 4.分组密码

    重点:分组密码的设计思想分组密码的基本特点AES、DES密码算法AES和DES各自组成、每部分的实现过程以及特点A...

  • 5.1 密码学专题 - 对称加密算法 - 详解 DES 算法

    密码学专题 - 对称加密算法 - DES 算法 5.1 DES 的描述 DES 是一个分组加密算法,它以 64 位...

  • 分组密码--DES算法

    什么是DES算法 DES是一种对称密码,加密和解密用的都是同一个密钥,有效密钥长度为56位。DES是一个分组密码算...

  • 常用加密算法比较

    DES加密算法 DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。...

  • 密码学第一次实验报告:DES算法与差分攻击

    实验题目 DES算法与差分攻击 实验目的 了解DES算法基本工作原理,体会并理解分组密码算法的混淆和扩散概念。了解...

  • AES加密算法(C++)

    AES算法是继DES之后比较快且比较简单的加密算法? AES算法 算法原理: AES密码与分组密码Rijndael...

  • 分组密码之DES

    算法分析 DES是一个对称密码体制,加密解密使用同一秘钥,有效密钥长度为56比特。 DES是一个分组密码算法,明文...

  • 分组密码与模式

    什么是分组密码和模式 前面我们讲过了DES和AES算法,他们每次都只能加密固定长度的明文,这样的密码算法叫做分组密...

网友评论

      本文标题:分组密码--DES算法

      本文链接:https://www.haomeiwen.com/subject/cgthkxtx.html