Algorithm 版 (精华区)

发信人: zjliu (Robusting), 信区: Algorithm
标  题: DES算法介绍
发信站: 哈工大紫丁香 (Sun Nov 17 15:42:26 2002) , 转信

 

来源:http://www.china-pub.com/computers/eMook/1043/info.htm

                    DES算法介绍 
                    作者:李俊 
                    发布时间:2001/06/15

DES算法介绍
  随着电脑的普及,很多以前在纸上的东西慢慢的转变为了电脑里面的文件了,而在
这其中又有很多重要的资料,还有就是隐私都不想被别人轻易看到,这时就有必要对文
件进行加密了。由此产生了本文。

DES算法:
  DES是一个分组加密算法,他以64位为分组对数据加密。同时DES也是一个对称算法
:加密和解密用的是同一个算法。
  它的密匙长度是56位(因为每个第8位都用作奇偶校验),密匙可以是任意的56位的
数,而且可以任意时候改变。其中有极少量的数被认为是弱密匙,但是很容易避开他们
。所以保密性依赖于密匙。

算法概要:
  DES对64位的明文分组进行操作,通过一个初始置换,将明文份组成左半部分和右半
部分,各32位长。然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中
数据于密匙结合。经过16轮候,左,右半部分合在一起经过一个末置换,这样就完成了

  在每一轮中,密匙位移位,然后再从密匙的56位中选出48位。通过一个扩展置换将
数据的右半部分扩展成48位,并通过一个异或操作替代成新的32位数据,在将其置换换
一次。这四步运算构成了函数f。然后,通过另一个异或运算,函数f的输出与左半部分
结合,其结果成为新的右半部分,原来的右半部分成为新的左半部分。将该操作重复16
次,就实现了。具体如下图。
……………………………………………………………..
初始置换:
  初始置换在第一轮运算之前执行,对输入分组实施如表1-2所示的变换。
表1-2 初始置换
--------------------------------------------------------------
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,
--------------------------------------------------------------
  初始置换和对应的末置换并不影响DES的安全性。所以很多软件实现方式删去了初始
置换和末置换。尽管这种新的算法的安全性不比DES差,但他没有遵循DES标准,所以不
叫DES。
  DES对64位的明文分组进行操作,通过一个初始置换,将明文份组成左半部分和右半
部分,各32位长。然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中
数据于密匙结合。经过16轮候,左,右半部分合在一起经过一个末置换,这样就完成了

  在每一轮中,密匙位移位,然后再从密匙的56位中选出48位。通过一个扩展置换将
数据的右半部分扩展成48位,并通过一个异或操作替代成新的32位数据,在将其置换换
一次。这四步运算构成了函数f。然后,通过另一个异或运算,函数f的输出与左半部分
结合,其结果成为新的右半部分,原来的右半部分成为新的左半部分。将该操作重复16
次,就实现了。具体如下图。
……………………………………………………………..
初始置换:
  初始置换在第一轮运算之前执行,对输入分组实施如表1-2所示的变换。
表1-2 初始置换
--------------------------------------------------------------
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,
--------------------------------------------------------------
  初始置换和对应的末置换并不影响DES的安全性。所以很多软件实现方式删去了初始
置换和末置换。尽管这种新的算法的安全性不比DES差,但他没有遵循DES标准,所以不
叫DES。
  DES对64位的明文分组进行操作,通过一个初始置换,将明文份组成左半部分和右半
部分,各32位长。然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中
数据于密匙结合。经过16轮候,左,右半部分合在一起经过一个末置换,这样就完成了

  在每一轮中,密匙位移位,然后再从密匙的56位中选出48位。通过一个扩展置换将
数据的右半部分扩展成48位,并通过一个异或操作替代成新的32位数据,在将其置换换
一次。这四步运算构成了函数f。然后,通过另一个异或运算,函数f的输出与左半部分
结合,其结果成为新的右半部分,原来的右半部分成为新的左半部分。将该操作重复16
次,就实现了。具体如下图。
……………………………………………………………..
初始置换:
  初始置换在第一轮运算之前执行,对输入分组实施如表1-2所示的变换。
表1-2 初始置换
--------------------------------------------------------------
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,
--------------------------------------------------------------
  初始置换和对应的末置换并不影响DES的安全性。所以很多软件实现方式删去了初始
置换和末置换。尽管这种新的算法的安全性不比DES差,但他没有遵循DES标准,所以不
叫DES。
  DES对64位的明文分组进行操作,通过一个初始置换,将明文份组成左半部分和右半
部分,各32位长。然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中
数据于密匙结合。经过16轮候,左,右半部分合在一起经过一个末置换,这样就完成了

  在每一轮中,密匙位移位,然后再从密匙的56位中选出48位。通过一个扩展置换将
数据的右半部分扩展成48位,并通过一个异或操作替代成新的32位数据,在将其置换换
一次。这四步运算构成了函数f。然后,通过另一个异或运算,函数f的输出与左半部分
结合,其结果成为新的右半部分,原来的右半部分成为新的左半部分。将该操作重复16
次,就实现了。具体如下图。
……………………………………………………………..
初始置换:
  初始置换在第一轮运算之前执行,对输入分组实施如表1-2所示的变换。
表1-2 初始置换
--------------------------------------------------------------
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,
--------------------------------------------------------------
  初始置换和对应的末置换并不影响DES的安全性。所以很多软件实现方式删去了初始
置换和末置换。尽管这种新的算法的安全性不比DES差,但他没有遵循DES标准,所以不
叫DES。
密匙置换:
  由于不考虑每个字节的第8位,DES的密匙由64位减至56位,每个字节第8位作为奇偶
校验确保密匙不发生错误。在DES每一轮中,从56位密匙产生出不同的48位子密匙,这些
子密匙Ki由下面的方式确定。
表1-3密匙置换
--------------------------------------------------------------
57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18,
10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36,
63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22,
14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4,
--------------------------------------------------------------
  首先,56位密匙本分成了两个部分,每部分28位。然后,根据论数,这两部分分别
循环左移1位或者2位。表1-4给出了每轮移动的位数。
表1-4 每轮移动的轮数
后,就从56位中选出48位。因为这个运算不仅置换了每位的顺序,同时也选择了子密匙
,因而被称作压缩置换。这个运算提供了一组48位的集。表1-5定义了压缩置换。
表1-5 压缩置换
--------------------------------------------------------------
14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10,
23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2,
41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48,
44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32,
密匙置换:
  由于不考虑每个字节的第8位,DES的密匙由64位减至56位,每个字节第8位作为奇偶
校验确保密匙不发生错误。在DES每一轮中,从56位密匙产生出不同的48位子密匙,这些
子密匙Ki由下面的方式确定。
表1-3密匙置换
--------------------------------------------------------------
57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18,
10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36,
63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22,
14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4,
--------------------------------------------------------------
  首先,56位密匙本分成了两个部分,每部分28位。然后,根据论数,这两部分分别
循环左移1位或者2位。表1-4给出了每轮移动的位数。
表1-4 每轮移动的轮数
后,就从56位中选出48位。因为这个运算不仅置换了每位的顺序,同时也选择了子密匙
,因而被称作压缩置换。这个运算提供了一组48位的集。表1-5定义了压缩置换。
表1-5 压缩置换
--------------------------------------------------------------
14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10,
23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2,
41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48,
44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32,
16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10,
2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25,
--------------------------------------------------------------
  最后,将P盒置换的结果与最初的64位分组的左半部分异或,然后左、右半部分交
换,接着开始另一轮。
末置换:
  末置换是初始置换的逆过程,表1-11列出了该置换。应该注意的是DES在最后一轮后
,左半部分和右半部分并未交换,而是将R16与L16并在一起形成一个分组作为末置换的
输入。其实交换左、右两部分并循环移动,仍将获得完全相同的结果;但这样左,就使
该算法既能作加密又能解密。
表1-11 末置换
--------------------------------------------------------------
40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31,
38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29,
36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27,
34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25,
--------------------------------------------------------------
DES解密:
    在经过所有的代替、置换、异或盒循环之后,你也许认为解密算法与加密算法
完全不同。恰恰相反,经过精心选择的各种操作,获得了一个非常有用的性质:加密和
解密使用相同的算法。
  DES加密和解密唯一的不同是密匙的次序相反。如果各轮加密密匙分别是K1,K2,K3…
.K16那么解密密匙就是K16,K15,K14…K1。为各轮产生的密是的算法也是循环的。米匙想
右移动,每次移动的个数为:0,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1。

参考文献:Bruce Schneier. Applied Cryptography Protocols,algorithms,and sour
ce code in C 1996

 




--

※ 来源:.哈工大紫丁香 http://bbs.hit.edu.cn [FROM: 202.118.229.86]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.837毫秒