1 / 29
文档名称:

DES-加密解密算法的C 实现--实验报告.doc

格式:doc   大小:5,103KB   页数:29页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

DES-加密解密算法的C 实现--实验报告.doc

上传人:Alone-丁丁 2021/8/22 文件大小:4.98 MB

下载得到文件列表

DES-加密解密算法的C 实现--实验报告.doc

文档介绍

文档介绍:DES-加密解密算法的C++实现--实验报告
D
的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。
通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络的流行做法。
2. DES算法详述
(1)DES加密标准
现如今,依靠Internet的分布式计算能力,用穷举密钥搜索攻击方法破译已成为可能。数据加密标准DES已经达到它的信任终点。但是作为一种Feistel加密算法的例子仍然有讨论的价值。
DES是对二元数字分组加密的分组密码算法,分组长度为64比特。每64位明文加密成64位密文,没有数据压缩和扩展,密钥长度为56比特,若输入64比特,则第8,16,24,32,40,48,56,64为奇偶校验位,所以,实际密钥只有56位。DES算法完全公开,其保密性完全依赖密钥。
它的缺点就在于密钥太短。
设明文串m=m1m2…m64;密钥串k=k1k2…k64。
在后面的介绍中可以看到k8,k16,k24,k32,k40,k48,k56,k64实际上是不起作用的。
DES的加密过程可表示为:
DES(m)= IP-1T16·T15…T2·T1·IP(m).
下面是完全16轮DES算法框图:
图1 完全16轮DES算法
1 初始置换IP
初始置换是将输入的64位明文分为8个数组,每一组包括8位,按1至64编号。
IP的置换规则如下表:
表1 IP置换规则
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
即将输入的第58位换到第1位,第50位换到第2位……,依次类推,最后一位是原来的第7位。
2 IP-1是IP的逆置换
由于第1位经过初始置换后,已处于第40位。逆置换就是再将第40位换回到第1位。
逆置换规则如下表所示:
表2 IP-1置换
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
初始置换IP及其逆置换IP-1并没有密码学意义,因为置换前后的一一对应关系是已知的。它们的作用在于打乱原来输入明文的ASC
Ⅱ码字划分的关系,并将原来明文的第m8,m16,m24,m32,m40,m48,m56,m64位(校验位)变成IP的输出的一个字节。
3. DES算法的迭代过程

图2 DES算法的迭代过程图
图中Li-1和Ri-1分别是第i-1次迭代结果的左右两部分,各32比特。即Li=Ri-1, Ri=Li-1  f(Ri-1,ki)。其中轮密钥Ki为48比特,函数F(R,K)。轮输入的右半部分R为32比特,R首先被扩展成48比特,扩展过程由表3定义,其中将R的16个比特各重复一次。扩展后的48比特再与子密钥Ki异或,然后再通过一个S盒,产生32比特的输出。该输出再经过一个由表4定义的置换,产生的结果即为函数F(R,K)的输出。
表3 扩展E
32
1
2
3
4
5
4
5
6
7
8
9
8
9
10
11
12
13
12
1