一、数据加密算法(DES)简介
数据加密算法(DES)是由IBM公司于19世纪70年代早期开发的,后来在1977年由“美国国家标准局(NBS)”,即现在的“国家标准化和技术协会(NIST)”所采纳,并批准把它作为飞机要部门使用的资料加密标准。自公布以来,DES便成为国际上商用保密通信盒计算机通信的最常用的加密算法。当时规定DES的使用期限为10~15年,后来美国政府宣布延长它的使用期限,其原因有两条:一是DES当时尚未受到严重的威胁;二是一直没有新的资料加密算法问世。DES在被采用后,大约每5年被评审一次。DES的最后一次评审在1999年1月;这时它的一个替代品高级加密标准(Advanced Encryption Standand)已经开始使用了,这标志着DES即将退出历史舞台。这样DES在国际通信保密的舞台上活跃了20余年的时间。
二、DES的基本结构
DES是一种对称密码,加密和解密用的都是同一个密钥,有效密钥长度为56位。DES是一个分组密码算法,分组长度为64位,即对数据进行加解密的单位是64位,明文和密文的长度相同。由于加密和解密用的是同一算法,所以有利于硬件和软件上的实现。注意上面说的56位是有效密钥长度,事实上我们用的是64位密钥,但是第8,16,24,32,40,56和64位是奇偶校验位。
(一)初始置换(IP)。将明文块的位进行换位,其置换表示固定的。初始置换表为8*8的表格,第一位58表示该位置存放明文中的第58位字符。第1位字符已经变换到40位的位置。
注意初始置换是固定公开的函数,因此没有密码的意义。作用不大,它们的作用在于打乱原来输入x的ASCII码字划分的关系。经过初始置换之后,64位明文分成了两组L和R,各32位。由于这种方法软件实现较为麻烦,所有很多软件实现都删去了初始置换。经过初始置换,64位的输入得到了两个32位的输出。
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 |
(二)16轮的轮函数F变换。轮函数F由3个部分组成:扩展置换(E盒),非线性代换(S盒)和线性置换(P盒)。
(1)E盒的作用是将32为扩展为48位,其扩展规则按下表进行。该表大小为6*8,去掉最左和最右两行,中间的四列包含了1-32的顺序。第1列和第6列分别是对第4和第1列的扩展。经过扩展置换,32位的输入得到了48位的输出。
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 |