一:理论简介:
1.DES是一种最通用的对称密钥算法。
(基于密钥的算法通常分为:对称算法和公开密钥算法)
(对称性体现在加密密钥能够从解密密钥推算出来,反之亦然)
(在大多数对称算法中,加密,解密的密钥是相同的)
2.DES的加密解密的密钥是相同的。
(可见,对称密钥算法里面的密钥都是保密的)
(而公开密钥算法的加密密钥是公开的,解密密钥是保密的)
3.DES加密算法的整体流程图。
补充:上图框架
- 初始置换IP;
- 子秘钥Ki的获取;
- 密码函数f
- 尾置换IP-1
二:准备工作
1.有明文M(64位二进制)=0123456789ABCDEF;
(换成二进制为0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111)
2.有密钥K(64位二进制)=133457799BBCDFF1;
(对应二进制)0001 0011 0011 0100 0101 0111 0111 1001 1001 1011 1011 1100 1101 1111 1111 0001
(其中包括8位奇偶校验码位置为8,16,24,32,40,48,56,64)
3.有许许多多的表格。
(S盒,E盒,P盒,IP等)。
三:详细步骤
1.密钥的变换
1)按照下表中的规则对各个位进行交换,生成16个子钥(64位变成56位)
(通过交换规则表去掉了奇偶校验位)
交换规则表(8*7):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
K*= 1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111
2)把56位的K*变成两部分----前28位C0和后28位D0;
因此:C0(28位) = 1111000 0110011 0010101 0101111
D0(28位) = 0101010 1011001 1001111 0001111
3)移位操作:
下来依次是C1,D1为C0,D0左移一位,C2,D2为C1,D1左移一位,C3,D3为C2,D2左移两位.......
所以,可以得到C1D1----C16D16的结果为:
C1 = 1110000 1100110 01010101011111
D1 = 1010101011001100111100011110
C2 = 1100001100110010101010111111
D2 = 0101010110011001111000111101
C3 = 0000110011001010101011111111
D3 = 0101011001100111100011110101
................
.................
C15 = 1111100001100110010101010111
D15 = 1010101010110011001111000111
C16 = 1111000011001100101010101111
D16 = 0101010101100101101110001111
PC-2(8*6)----为一个8*6的矩阵,将上面得到的16个子钥按照下表的规律进行位的交换
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
上述过程也就是让CnDn经过另外一个表,该表序号