一:理论简介:
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 = 101010101100110011110001