des共享加密算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
加密算法------DES加密算法详解
一、加密算法的分类
1.对称加解密算法
a.通信双方同时掌握一个密钥,加密解密都是由一个密钥完成的(即加密密钥等于解密密钥,加解密密钥可以相互推倒出来)。
b.双方通信前共同拟定一个密钥,不对第三方公开。
c.不具有个体原子性,一个密钥被共享,泄漏几率增大
2.公私钥加解密算法
a.通信双方掌握不同的密钥,不同方向的加解密由不同的密钥完成。
二、对称加密算法的代表----DES加密算法
原理:该算法是一个利用56+8奇偶校验位(第8,16,24,32,40,48,56,64)=64位的密钥对以64位为单位的块数据进行加解密。
具体过程:
有明文M(64位)= 0123456789ABCDEF
即M(64位)= 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
L(32位)= 0000 0001 0010 0011 0100 0101 0110 0111
R(32位)= 1000 1001 1010 1011 1100 1101 1110 1111
有密钥64位:133457799BBCDFF1
即K(64位)= 0001001100110100010101110111100110011011 10111100 11011111 11110001
注:其中红色为奇偶校验位,即实际密钥为56位
第一步:按照下表中的规则对各个位进行交换,生成16个子钥(48位)
交换规则表(8*7):
57 49 41 33 25 17 9
1 58 50 4
2 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
交换方法:第一行第一列的数为57,那么就将K中第一位上的数换成K中第57位上的数(将0换为了57位上的1),依次类推。
那么原K(64位)= 00010011 00110100 01010111 01111001 10011011 10111100 11011111 1 1110001
去掉奇偶校验位,再经过上表的转换就变为了:
K + (56位)= 1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111
因此:C0(28位)= 1111000 0110011 0010101 0101111
D0(28位)= 0101010 1011001 1001111 0001111
下来依次是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
Kn(48位)= PC-2(CnDn(56位))
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
因此,通过上面公式的计算可以得到:
K1 = 000110 110000 001011 101111 111111 000111 000001 110010
(Eg:C1D1 = 1110000110011001010101011111 10101010110011 0011110 0011110
红色部分为奇偶校验位,那么通过上表对C1D1进行位的变换:将14位上的0放到第一位,将17位上的0放到第二位,将11位上的0放到第三位,将24位上的1放到第四位,将1位上的一放到第五位,将5位上的0放到第六位;则最后的前6位的结果·就·变为000110,剩下的做法同上)
****************以下做法都同K1*********************************
K2 = 011110 011010 111011 011001 110110 111100 100111 100101
K3 = 010101 011111 110010 001010 010000 101100 111110 011001
K4 = 011100 101010 110111 010110 110110 110011 010100 011101
K5 = 011111 001110 110000 000111 111010 110101 001110 101000
K6 = 011000 111010 010100 111110 010100 000111 101100 101111
K7 = 111011 001000 010010 110111 111101 100001 100010 111100
K8 = 111101 111000 101000 111010 110000 010011 101111 111011
K9 = 111000 001101 101111 101011 111011 011110 011110 000001
K10 = 101100 011111 001101 000111 101110 100100 011001 001111
K11 = 001000 010101 111111 010011 110111 101101 001110 000110
K12 = 011101 010111 000111 110101 100101 000110 011111 101001
K13 = 100101 111100 010111 010001 111110 101011 101001 000001
K14 = 010111 110100 001110 110111 111100 101110 011100 111010